android 6.0 内部SD卡权限管理的方法

来源:互联网 发布:淘宝中老年女冬装上衣 编辑:程序博客网 时间:2024/05/23 00:54

android 6.0以后,权限的管理方法就不仅局限于androidManifest.xml了,APK 如果需要权限,必须要在代码里实现权限的申请。

下面是实时查看权限的许可情况和实时撤销权限许可的命令(不用每次都去: 设置->应用->xxx应用->应用信息->权限->权限列表,修改权限的许可)的方法

  • Use the adb tool to manage permissions from the command line:
    • List permissions and status by group: 这个只是列出设备的所有的危险权限,并没有命令来显示某个应用的权限的许可情况(这点不好)
      $ adb shell pm list permissions -d -g
    • Grant or revoke one or more permissions:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • Analyze your app for services that use permissions.
查看内部SD权限的读取权限

group:android.permission-group.STORAGE
  permission:android.permission.READ_EXTERNAL_STORAGE
  permission:android.permission.WRITE_EXTERNAL_STORAGE


权限的申请判断代码如下:

/***     group:android.permission-group.STORAGE     permission:android.permission.READ_EXTERNAL_STORAGE     permission:android.permission.WRITE_EXTERNAL_STORAGE     ***/    private static final int REQUEST_EXTERNAL_STORAGE = 1;    private static String[] PERMISSIONS_STORAGE = {            Manifest.permission.READ_EXTERNAL_STORAGE,            Manifest.permission.WRITE_EXTERNAL_STORAGE };    private boolean verifyStoragePermissions(Activity activity) {        if(Util.SDK_INT < 23) /*******below android 6.0*******/        {            return true;        }        // Check if we have write permission        int permission = ActivityCompat.checkSelfPermission(activity,                Manifest.permission.READ_EXTERNAL_STORAGE);        if (permission != PackageManager.PERMISSION_GRANTED) {            // We don't have permission so prompt the user            ActivityCompat.requestPermissions(activity,PERMISSIONS_STORAGE,                    REQUEST_EXTERNAL_STORAGE);            return false;        }        else        {          return true;        }    }

如果verifyStoragePermissions 返回时false,那么需要实现权限的申请处理,实现onRequestPermissionResult

    @Override    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {        switch (requestCode) {            case REQUEST_EXTERNAL_STORAGE: {                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    /×××do request function(into apk)×××××/                } else {             Toast.makeText(getApplicationContext(),             "storage permission denied,it will exit apk",             Toast.LENGTH_LONG).show();                                         /×××do request function(exitapk)×××××/                      finish();                       }                     }           break;            default:            super.onRequestPermissionsResult(requestCode, permissions, grantResults);           break;         }       }      }


如果verifyStoragePermissions返回true则直接进入APK或Activity.
其他的应用可以参考如下链接:
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1110/3670.html
http://www.jianshu.com/p/a51593817825
http://blog.csdn.net/lmj623565791/article/details/50709663
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1110/3670.html
http://blog.csdn.net/yangqingqo/article/details/48371123/


0 0
原创粉丝点击