1- create transparent activity
<activity android:name=".activity.activity.CheckStoragePermissionsActivity" android:theme="@style/Theme.Transparent"> <style name="Theme.Transparent" parent="Theme.AppCompat"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">false</item> </style>
2- configure your activity
public class CheckStoragePermissionsActivity extends AppCompatActivity { private String[] permissions; private int pCode = 12321; public static PermissionListener permissionListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); checkPermissions(); } private void checkPermissions() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; boolean flag = false; for (String s : permissions) if (checkSelfPermission(s) != PackageManager.PERMISSION_GRANTED) flag = true; if (flag) { requestPermissions(permissions, pCode); } else { permissionListener.permissionResult(true); finish(); } }else finish(); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == pCode) { boolean flag = true; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) for (int i = 0, len = permissions.length; i < len; i++) if (grantResults[i] != PackageManager.PERMISSION_GRANTED) flag = false; if (flag) { if (permissionListener != null) permissionListener.permissionResult(true); } else if (permissionListener != null) permissionListener.permissionResult(false); finish(); } } }
3- permissionListener is a static interface and can be set just before context.startActivity (...) or use your plan to get permission.
public interface PermissionListener extends Serializable { void permissionResult(boolean hasPermission); }
4- finally call context.startActivity(new Intent(context, CheckStoragePermissionsActivity.class));
CheckStoragePermissionsActivity do everything you need and finish after the user allows or cancels the action.
Misagh Nov 19 '16 at 15:14 2016-11-19 15:14
source share