android user permission – How to check Grants Permissions at Run-Time?
In this Android article, we are making android user permission. How to check android user permission is allowed or not in android. This is for marshmallow and higher and shows a dialog when permission is not allowed. In this Android tutorial, I am sharing How permission can be checked at runtime without throwing SecurityException? marshmallow and higher version and show a dialog to allow user permission.
Android user permission
Step 1: First one to Start Android Studio
Step 2 : Seconds step to Create a New Project Project Click On ==> File ==>NEW ==> New Project And Create Activity in your project
And add permission in manifests file how you required like these:-
Manifests
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="com.javapapers.android.androidlocationmaps.permission.MAPS_RECEIVE" />
Add these code where you can check user permission in any activity . for
Login.java add these codes in your java class
public class LogIn extends AppCompatActivity { int PERMISSION_ALL = 1; String[] PERMISSIONS = {android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.CHANGE_NETWORK_STATE, android.Manifest.permission.CAMERA,android.Manifest.permission.ACCESS_FINE_LOCATION}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_log_in); if(!hasPermissions(this, PERMISSIONS)){ ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL); } if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){ } else{ // do something for phones running an SDK before lollipop } } public static boolean hasPermissions(Context context, String... permissions) { if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) { for (String permission : permissions) { if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { return false; } } } return true; } }
Also You can find the below check image permission for the android 13 and below. because of above android 12 App permission is change.
public static String[] storage_permissions = { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE }; @RequiresApi(api = Build.VERSION_CODES.TIRAMISU) public static String[] storage_permissions_33 = { Manifest.permission.READ_MEDIA_IMAGES, }; public static String[] permissions() { String[] p; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { p = storage_permissions_33; } else { p = storage_permissions; } return p; } private void pickImage() { if (Build.VERSION.SDK_INT >= 33 && ContextCompat.checkSelfPermission(this, Manifest.permission.READ_MEDIA_IMAGES) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(this, permissions(), 1); }else if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(this, permissions(), 1); }else { openGallery(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 1){ openGallery(); } } private void openGallery() { Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); resultLauncher.launch(galleryIntent); } ActivityResultLauncher<Intent> resultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { if (result.getResultCode() == Activity.RESULT_OK) { // There are no request codes Intent data = result.getData(); ImageURI = data != null ? data.getData() : null; if (ImageURI != null) { if (Build.VERSION.SDK_INT >= 28) { ImageDecoder.Source source = ImageDecoder.createSource(getContentResolver(), ImageURI); try { if(ImageType.equals("profile")){ profileImageBitmap = ImageDecoder.decodeBitmap(source); profile_Bill_photo.setImageBitmap(profileImageBitmap); uploadImage("profileImage"); }else if(ImageType.equals("doc")){ docImageBitmap = ImageDecoder.decodeBitmap(source); docr_photo.setImageBitmap(docImageBitmap); uploadImage("docimage"); }else { } } catch (IOException e) { throw new RuntimeException(e); } } else { try { if(ImageType.equals("profile")){ profileImageBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), ImageURI); profile_Bill_photo.setImageBitmap(profileImageBitmap); uploadImage("profileimage"); }else if(ImageType.equals("doc")){ docImageBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), ImageURI); doc_photo.setImageBitmap(docImageBitmap); uploadImage("docimage"); }else { } } catch (IOException e) { throw new RuntimeException(e); } } } } } });
Read More Tutorial