{"id":9440,"date":"2023-07-01T12:27:39","date_gmt":"2023-07-01T12:27:39","guid":{"rendered":"http:\/\/goldenmace.com\/blog\/?p=9440"},"modified":"2023-07-01T12:49:16","modified_gmt":"2023-07-01T12:49:16","slug":"how-to-add-runtime-permission-in-android-apps","status":"publish","type":"post","link":"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/","title":{"rendered":"How to add runtime permission in android apps?"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"9440\" class=\"elementor elementor-9440\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-602311ff elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"602311ff\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4c728b8e\" data-id=\"4c728b8e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4a3a927d elementor-widget elementor-widget-text-editor\" data-id=\"4a3a927d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p><a href=\"https:\/\/goldenmace.com\/blog\/author\/vishal\/\"><\/a><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d7f9f1c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d7f9f1c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-596fde7\" data-id=\"596fde7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6362083 elementor-widget elementor-widget-text-editor\" data-id=\"6362083\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>I know, it is a bit late to discuss about Runtime Permissions as there are two higher version of the Android OS versions already rolled out. Here I want to share the thought how we are integrating Runtime Permissions in our all Android apps. Lets we guide you how to add runtime permission in android.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-28c1a6b elementor-widget elementor-widget-text-editor\" data-id=\"28c1a6b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>From Android OS 6.0 (API level 23), user needs to grant some of permission when app is running and app wants to access some of user\u2019s privacy. Below API level 23 a flow remains same as what we were doing previously \u2013 no runtime permission requires.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ca5dc39 elementor-widget elementor-widget-text-editor\" data-id=\"ca5dc39\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>This blog will help you to the how to implement runtime permission using few line of code. There are many user-permissions in Android but I am only going to focus on some of the most used.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5cdfba7 elementor-widget elementor-widget-text-editor\" data-id=\"5cdfba7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Also demonstrates single permission and group of permission.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-42f2913 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"42f2913\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8df0aa9\" data-id=\"8df0aa9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-55ccd16 elementor-widget elementor-widget-heading\" data-id=\"55ccd16\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Check Self Permissions<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5435800 elementor-widget elementor-widget-text-editor\" data-id=\"5435800\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: left;\">checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED)<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5e8015b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5e8015b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d4569da\" data-id=\"d4569da\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-cc561e8 elementor-widget elementor-widget-heading\" data-id=\"cc561e8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Requesting Permissions<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8bf55d2 elementor-widget elementor-widget-text-editor\" data-id=\"8bf55d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The method requestPermissions(String[] permissions, int requestCode); is a public method that is used to request dangerous permissions. We can ask for multiple dangerous permissions by passing a string array of permissions.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c41055 elementor-widget elementor-widget-text-editor\" data-id=\"1c41055\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>ActivityCompat.requestPermissions(this, permissions, requestCode);<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-dc96b7a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"dc96b7a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bcc61b6\" data-id=\"bcc61b6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-79944a3 elementor-widget elementor-widget-heading\" data-id=\"79944a3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Dangerous vs. Non-Dangerous Permissions<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-caf9e01 elementor-widget elementor-widget-text-editor\" data-id=\"caf9e01\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tAndroid defines some permission as \u201cdangerous\u201d and some permission as \u201cnormal.\u201d Both are required in your application\u2019s manifest but only dangerous permissions require a runtime request. Normal permissions are accepted at install time and cannot be revoked later. An example of a normal permission is android.permission.INTERNET. Dangerous permissions are grouped into categories that make it easier for the user to understand what they are allowing the application to do. If the user accepts one permission in a group they accept the entire group. The opposite is true as well, if the user denied one permission in a group, the entire group in denied. The example application demonstrates this with both FINE_LOCATION and COARSE_LOCATION of the group LOCATION. You will notice that once the user has granted permission for one, the application is automatically granted permission for the other without the need to ask.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c47ad10 elementor-widget elementor-widget-text-editor\" data-id=\"c47ad10\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Know more about dangerous permissions from\u00a0<a href=\"https:\/\/developer.android.com\/guide\/topics\/permissions\/requesting.html#perm-groups\">here<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ae21cdc elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ae21cdc\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-605e6f2\" data-id=\"605e6f2\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c2d63c1 elementor-widget elementor-widget-heading\" data-id=\"c2d63c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Code<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3a5a5ce elementor-widget elementor-widget-heading\" data-id=\"3a5a5ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">AndroidManifest.xml<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-084d46d elementor-widget elementor-widget-text-editor\" data-id=\"084d46d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>&lt;uses-permission android:name=\u201dandroid.permission.READ_CONTACTS\u201d \/&gt;<\/p>\n<p>\u00a0\u00a0\u00a0 &lt;uses-permission android:name=\u201dandroid.permission.CAMERA\u201d \/&gt;<\/p>\n<p>\u00a0\u00a0\u00a0 &lt;uses-permission android:name=\u201dandroid.permission.WRITE_EXTERNAL_STORAGE\u201d \/&gt;<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-cbd3f6c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"cbd3f6c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-643c222\" data-id=\"643c222\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8729cb3 elementor-widget elementor-widget-heading\" data-id=\"8729cb3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">PermissionSampleActivity.java<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-976666d elementor-widget elementor-widget-text-editor\" data-id=\"976666d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>To start using this sample project you just need to extends RuntimePermissionActivity :<\/p>\n<p>public class PermissionSampleActivity extends RuntimePermissionActivity {<\/p>\n<p>\u00a0\u00a0 \u2026<\/p>\n<p>\u00a0}<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b4381a4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b4381a4\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0c71cd1\" data-id=\"0c71cd1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-bcb0920 elementor-widget elementor-widget-heading\" data-id=\"bcb0920\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Single permission<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8624226 elementor-widget elementor-widget-text-editor\" data-id=\"8624226\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>For each single permission :<\/p>\n<p>\u00a0<\/p>\n<p>if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {<\/p>\n<p>\u00a0\u00a0\u00a0 askRequestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, R.string.enable_permission, REQUEST_CONTACT_PERMISSIONS);<\/p>\n<p>} else {<\/p>\n<p>\u00a0\u00a0\u00a0 \/\/ Permission already granted.<\/p>\n<p>\u00a0\u00a0\u00a0 \/\/ add your logic<\/p>\n<p>}<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-58ef36a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"58ef36a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9482393\" data-id=\"9482393\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e13cda5 elementor-widget elementor-widget-heading\" data-id=\"e13cda5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Multiple permissions<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9e1ebbd elementor-widget elementor-widget-text-editor\" data-id=\"9e1ebbd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>For each group permission :<\/p>\n<p>\u00a0<\/p>\n<p>if ((ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED)<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0 || (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0 || (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) {<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0 askRequestPermissions(new String[]{Manifest.permission.READ_CONTACTS, Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE},<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 R.string.enable_permission, REQUEST_GROUP_PERMISSIONS);<\/p>\n<p>} else {<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Permission already granted.<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ add your logic<\/p>\n<p>}<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-753daa6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"753daa6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3543266\" data-id=\"3543266\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-cd3ab11 elementor-widget elementor-widget-heading\" data-id=\"cd3ab11\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Permission Granted<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c269467 elementor-widget elementor-widget-text-editor\" data-id=\"c269467\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>After granting permission write down your method or custom code :<\/p>\n<p>\u00a0<\/p>\n<p>@Override<\/p>\n<p>\u00a0\u00a0\u00a0 public void onRequestPermissionsGranted(int requestCode) {<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 switch (requestCode) {<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Single permission granted<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 case REQUEST_CONTACT_PERMISSIONS:<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/TODO Add your logic<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Group permission granted<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 case REQUEST_GROUP_PERMISSIONS:<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/TODO Add your logic<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5a7f53c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5a7f53c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e9658cf\" data-id=\"e9658cf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-63d60e5 elementor-widget elementor-widget-text-editor\" data-id=\"63d60e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h4><strong>GitHub link :\u00a0<\/strong><a href=\"https:\/\/github.com\/Goldenmace\/droid-RuntimePermissions\" data-wplink-edit=\"true\">https:\/\/github.com\/Goldenmace\/droid-RuntimePermissions<\/a><\/h4>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>I know, it is a bit late to discuss about Runtime Permissions as there are two higher version of the Android OS versions already rolled out. Here I want to share the thought how we are integrating Runtime Permissions in our all Android apps. Lets we guide you how to add runtime permission in android. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[87,69,65,80],"tags":[68,109,116,114],"class_list":["post-9440","post","type-post","status-publish","format-standard","hentry","category-android-mobile-applications","category-mobile-applications","category-programming","category-web-development","tag-android","tag-github","tag-iso","tag-runtime-permissions"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to add runtime permission in android apps? - Goldenmace IT Solutions<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to add runtime permission in android apps? - Goldenmace IT Solutions\" \/>\n<meta property=\"og:description\" content=\"I know, it is a bit late to discuss about Runtime Permissions as there are two higher version of the Android OS versions already rolled out. Here I want to share the thought how we are integrating Runtime Permissions in our all Android apps. Lets we guide you how to add runtime permission in android. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/\" \/>\n<meta property=\"og:site_name\" content=\"Goldenmace IT Solutions\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-01T12:27:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-01T12:49:16+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/goldenmace.com\/blog\/#\/schema\/person\/812307b551c443c69c5d0cf347807553\"},\"headline\":\"How to add runtime permission in android apps?\",\"datePublished\":\"2023-07-01T12:27:39+00:00\",\"dateModified\":\"2023-07-01T12:49:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/\"},\"wordCount\":741,\"publisher\":{\"@id\":\"https:\/\/goldenmace.com\/blog\/#organization\"},\"keywords\":[\"android\",\"github\",\"iSO\",\"Runtime Permissions\"],\"articleSection\":[\"Android\",\"Mobile Applications\",\"Programming\",\"Web development\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/\",\"url\":\"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/\",\"name\":\"How to add runtime permission in android apps? - Goldenmace IT Solutions\",\"isPartOf\":{\"@id\":\"https:\/\/goldenmace.com\/blog\/#website\"},\"datePublished\":\"2023-07-01T12:27:39+00:00\",\"dateModified\":\"2023-07-01T12:49:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/goldenmace.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to add runtime permission in android apps?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/goldenmace.com\/blog\/#website\",\"url\":\"https:\/\/goldenmace.com\/blog\/\",\"name\":\"Goldenmace IT Solutions\",\"description\":\"Research driven tech studio\",\"publisher\":{\"@id\":\"https:\/\/goldenmace.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/goldenmace.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/goldenmace.com\/blog\/#organization\",\"name\":\"Goldenmace IT Solutions\",\"url\":\"https:\/\/goldenmace.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/goldenmace.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/goldenmace.com\/blog\/wp-content\/uploads\/2019\/07\/white-logo.png\",\"contentUrl\":\"https:\/\/goldenmace.com\/blog\/wp-content\/uploads\/2019\/07\/white-logo.png\",\"width\":1096,\"height\":229,\"caption\":\"Goldenmace IT Solutions\"},\"image\":{\"@id\":\"https:\/\/goldenmace.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/goldenmace.com\/blog\/#\/schema\/person\/812307b551c443c69c5d0cf347807553\",\"name\":\"admin\",\"url\":\"https:\/\/goldenmace.com\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to add runtime permission in android apps? - Goldenmace IT Solutions","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/","og_locale":"en_US","og_type":"article","og_title":"How to add runtime permission in android apps? - Goldenmace IT Solutions","og_description":"I know, it is a bit late to discuss about Runtime Permissions as there are two higher version of the Android OS versions already rolled out. Here I want to share the thought how we are integrating Runtime Permissions in our all Android apps. Lets we guide you how to add runtime permission in android. [&hellip;]","og_url":"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/","og_site_name":"Goldenmace IT Solutions","article_published_time":"2023-07-01T12:27:39+00:00","article_modified_time":"2023-07-01T12:49:16+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/#article","isPartOf":{"@id":"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/"},"author":{"name":"admin","@id":"https:\/\/goldenmace.com\/blog\/#\/schema\/person\/812307b551c443c69c5d0cf347807553"},"headline":"How to add runtime permission in android apps?","datePublished":"2023-07-01T12:27:39+00:00","dateModified":"2023-07-01T12:49:16+00:00","mainEntityOfPage":{"@id":"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/"},"wordCount":741,"publisher":{"@id":"https:\/\/goldenmace.com\/blog\/#organization"},"keywords":["android","github","iSO","Runtime Permissions"],"articleSection":["Android","Mobile Applications","Programming","Web development"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/","url":"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/","name":"How to add runtime permission in android apps? - Goldenmace IT Solutions","isPartOf":{"@id":"https:\/\/goldenmace.com\/blog\/#website"},"datePublished":"2023-07-01T12:27:39+00:00","dateModified":"2023-07-01T12:49:16+00:00","breadcrumb":{"@id":"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/goldenmace.com\/blog\/how-to-add-runtime-permission-in-android-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/goldenmace.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to add runtime permission in android apps?"}]},{"@type":"WebSite","@id":"https:\/\/goldenmace.com\/blog\/#website","url":"https:\/\/goldenmace.com\/blog\/","name":"Goldenmace IT Solutions","description":"Research driven tech studio","publisher":{"@id":"https:\/\/goldenmace.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/goldenmace.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/goldenmace.com\/blog\/#organization","name":"Goldenmace IT Solutions","url":"https:\/\/goldenmace.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/goldenmace.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/goldenmace.com\/blog\/wp-content\/uploads\/2019\/07\/white-logo.png","contentUrl":"https:\/\/goldenmace.com\/blog\/wp-content\/uploads\/2019\/07\/white-logo.png","width":1096,"height":229,"caption":"Goldenmace IT Solutions"},"image":{"@id":"https:\/\/goldenmace.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/goldenmace.com\/blog\/#\/schema\/person\/812307b551c443c69c5d0cf347807553","name":"admin","url":"https:\/\/goldenmace.com\/blog\/author\/admin\/"}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"admin","author_link":"https:\/\/goldenmace.com\/blog\/author\/admin\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/goldenmace.com\/blog\/category\/android-mobile-applications\/\" rel=\"category tag\">Android<\/a> <a href=\"https:\/\/goldenmace.com\/blog\/category\/mobile-applications\/\" rel=\"category tag\">Mobile Applications<\/a> <a href=\"https:\/\/goldenmace.com\/blog\/category\/programming\/\" rel=\"category tag\">Programming<\/a> <a href=\"https:\/\/goldenmace.com\/blog\/category\/web-development\/\" rel=\"category tag\">Web development<\/a>","rttpg_excerpt":"I know, it is a bit late to discuss about Runtime Permissions as there are two higher version of the Android OS versions already rolled out. Here I want to share the thought how we are integrating Runtime Permissions in our all Android apps. Lets we guide you how to add runtime permission in android.&hellip;","_links":{"self":[{"href":"https:\/\/goldenmace.com\/blog\/wp-json\/wp\/v2\/posts\/9440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/goldenmace.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/goldenmace.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/goldenmace.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/goldenmace.com\/blog\/wp-json\/wp\/v2\/comments?post=9440"}],"version-history":[{"count":9,"href":"https:\/\/goldenmace.com\/blog\/wp-json\/wp\/v2\/posts\/9440\/revisions"}],"predecessor-version":[{"id":9450,"href":"https:\/\/goldenmace.com\/blog\/wp-json\/wp\/v2\/posts\/9440\/revisions\/9450"}],"wp:attachment":[{"href":"https:\/\/goldenmace.com\/blog\/wp-json\/wp\/v2\/media?parent=9440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/goldenmace.com\/blog\/wp-json\/wp\/v2\/categories?post=9440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/goldenmace.com\/blog\/wp-json\/wp\/v2\/tags?post=9440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}