Advertisement
vergepuppeter

Runtime Permission

Feb 19th, 2017
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.79 KB | None | 0 0
  1. public class SplashScreen extends AppCompatActivity {
  2.  
  3.     private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
  4.     private static final  int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124;
  5.  
  6.     @Override
  7.     protected void onCreate(Bundle savedInstanceState) {
  8.         super.onCreate(savedInstanceState);
  9.  
  10.         setContentView(R.layout.activity_splash_screen);
  11.  
  12.     }
  13.  
  14.     @Override
  15.     protected void onPostCreate(Bundle savedInstanceState) {
  16.         super.onPostCreate(savedInstanceState);
  17.     }
  18.  
  19.     @Override
  20.     public void onWindowFocusChanged(boolean hasFocus) {
  21.         super.onWindowFocusChanged(hasFocus);
  22.         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
  23.             if (hasFocus) {
  24.                 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
  25.                         | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
  26.                         | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
  27.                         | View.SYSTEM_UI_FLAG_FULLSCREEN
  28.                         | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
  29.             }
  30.         }
  31.     }
  32.  
  33.     private boolean checkPlayServices() {
  34.         GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
  35.         int resultCode = apiAvailability.isGooglePlayServicesAvailable(this);
  36.         if (resultCode != ConnectionResult.SUCCESS) {
  37.             if (apiAvailability.isUserResolvableError(resultCode)) {
  38.                 apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST)
  39.                         .show();
  40.             } else {
  41.                 Log.i("Google Play", "This device is not supported.");
  42.             }
  43.             return false;
  44.         }
  45.         return true;
  46.     }
  47.  
  48.     @Override
  49.     protected void onResume() {
  50.         super.onResume();
  51.          if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
  52.               // Marshmallow+
  53.               askMultipleRuntimePermission();
  54.          }else{
  55.               //below Marshmallow
  56.               //do something
  57.          }
  58.     }
  59.  
  60.     @TargetApi(Build.VERSION_CODES.M)
  61.     public void askMultipleRuntimePermission(){
  62.         List<String> permissionsNeeded = new ArrayList<String>();
  63.  
  64.         final List<String> permissionsList = new ArrayList<String>();
  65.         if (!addPermission(permissionsList, Manifest.permission.ACCESS_FINE_LOCATION))
  66.             permissionsNeeded.add("GPS");
  67.         if (!addPermission(permissionsList, Manifest.permission.CAMERA))
  68.             permissionsNeeded.add("Camera");
  69.         if (!addPermission(permissionsList, Manifest.permission.CALL_PHONE))
  70.             permissionsNeeded.add("Phone Call");
  71.         if (!addPermission(permissionsList, Manifest.permission.WRITE_EXTERNAL_STORAGE))
  72.             permissionsNeeded.add("Write File");
  73.         if (!addPermission(permissionsList, Manifest.permission.READ_CONTACTS))
  74.             permissionsNeeded.add("Read Contacts");
  75.         if (!addPermission(permissionsList, Manifest.permission.RECORD_AUDIO))
  76.             permissionsNeeded.add("Record Audio");
  77.  
  78.  
  79.         if (permissionsList.size() > 0) {
  80.             if (permissionsNeeded.size() > 0) {
  81.                 // Need Rationale
  82. //                String message = "You need to grant access to " + permissionsNeeded.get(0);
  83. //                for (int i = 1; i < permissionsNeeded.size(); i++)
  84. //                    message = message + ", " + permissionsNeeded.get(i);
  85. //                showMessageOKCancel(message, new DialogInterface.OnClickListener() {
  86. //                    @Override
  87. //                    public void onClick(DialogInterface dialog, int which) {
  88. //
  89. //                    }
  90. //                });
  91.                 requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
  92.                         REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
  93.                 return;
  94.             }
  95.             requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
  96.                     REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
  97.             return;
  98.         }
  99.         else{
  100.             //Do something here
  101.         }
  102.  
  103.     }
  104.  
  105.  
  106.     @TargetApi(Build.VERSION_CODES.M)
  107.     private boolean addPermission(List<String> permissionsList, String permission) {
  108.         if (ActivityCompat.checkSelfPermission(this,permission) != PackageManager.PERMISSION_GRANTED) {
  109.             permissionsList.add(permission);
  110.             // Check for Rationale Option
  111.             if (!shouldShowRequestPermissionRationale(permission))
  112.                 return false;
  113.         }
  114.         return true;
  115.     }
  116.  
  117.     @Override
  118.     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
  119.         switch (requestCode) {
  120.             case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS: {
  121.                 Map<String, Integer> perms = new HashMap<String, Integer>();
  122.                 // Initial
  123.                 perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED);
  124.                 perms.put(Manifest.permission.CAMERA, PackageManager.PERMISSION_GRANTED);
  125.                 perms.put(Manifest.permission.CALL_PHONE, PackageManager.PERMISSION_GRANTED);
  126.                 perms.put(Manifest.permission.WRITE_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED);
  127.                 perms.put(Manifest.permission.READ_CONTACTS, PackageManager.PERMISSION_GRANTED);
  128.                 perms.put(Manifest.permission.RECORD_AUDIO, PackageManager.PERMISSION_GRANTED);
  129.                 // Fill with results
  130.                 for (int i = 0; i < permissions.length; i++)
  131.                     perms.put(permissions[i], grantResults[i]);
  132.                 // Check for ACCESS_FINE_LOCATION
  133.                 if (perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
  134.                         && perms.get(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
  135.                         && perms.get(Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED
  136.                         && perms.get(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
  137.                         && perms.get(Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED
  138.                         && perms.get(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
  139.                     // All Permissions Granted
  140.                     // Do something next
  141.                 } else {
  142.                     // Permission Denied
  143.                     Log.i("Permission", " some of the permission have been denied");
  144.                     // Alert user about permission denied, and do something
  145.                 }
  146.             }
  147.             break;
  148.             default:
  149.                 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  150.         }
  151.     }
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement