首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Android

简单安卓 APP,需要动态调用外部存储权限

  •  
  •   xuhuanpku · 2018-01-21 21:21:56 +08:00 · 2558 次点击
    这是一个创建于 661 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己的小 APP,以前手机版本比较低,只是在 AndroidManifest.xml 写入了调用外部存储权限,但是现在手机升级之后,必须动态调用权限,求帮忙 QQ:5194434

    7 回复  |  直到 2018-01-24 10:17:57 +08:00
        1
    zhgg0   2018-01-21 21:41:27 +08:00   ♥ 1
    if(ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED)) {
    ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_CONTACTS},
    MY_PERMISSIONS_REQUEST_READ_CONTACTS);
    }

    既然是小 app 就不需要考虑太多,在启动时,判断下系统版本,弄个 for 循环把所有必需的权限全这么申请一遍。
    少数特殊权限可以在使用时判断,无权限流程不往下走,在 onRequestPermissionsResult 中接收到权限后再接着流程走。
        2
    honeycomb   2018-01-22 12:56:57 +08:00 via Android
    compact 库已经提供了现成的获取运行时权限的代码。

    还有个办法就是降 targetsdk
        3
    zpxshl   2018-01-22 20:37:14 +08:00 via Android
    如楼上所说,降低 targetsdk 到 6.0 对应的那个版本以下,系统默认给你申请的全部权限。但用户依旧可以手动禁止。要标准就像楼上的楼上一样申请权限,有几个开源框架可以使用,比原生代码简单。
    国内有些魔改系统比如 miui 可能不按谷歌定下的规范来,比如拒绝了你的权限申请返回 true...要注意一下。
        4
    demo06   2018-01-23 14:00:07 +08:00
    @zpxshl 我之前魅族一款手机获取的手机号 中间有两位数字顺序颠倒,我也是很无奈
        5
    xuhuanpku   2018-01-23 14:54:09 +08:00
    @zhgg0 我也查了,可以加入这些
    private static final int REQUEST_EXTERNAL_STORAGE = 1;
    private static String[] PERMISSIONS_STORAGE = {
    Manifest.permission.READ_EXTERNAL_STORAGE,
    Manifest.permission.WRITE_EXTERNAL_STORAGE};

    public static void verifyStoragePermissions(Activity activity) {
    // Check if we have write permission
    int permission = ActivityCompat.checkSelfPermission(activity,
    Manifest.permission.WRITE_EXTERNAL_STORAGE);

    if (permission != PackageManager.PERMISSION_GRANTED) {
    // We don't have permission so prompt the user
    ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,
    REQUEST_EXTERNAL_STORAGE);
    }
    }

    不过这是应该加在哪呢?有人说是 Activity ?难道是在 AndroidManifest.xml 里面?
        6
    honeycomb   2018-01-23 17:33:33 +08:00 via Android
    @xuhuanpku 建议你直接拉一个 sample 项目里关于运行时权限的
        7
    AndroidTraveler   2018-01-24 10:17:57 +08:00
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2393 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 15:43 · PVG 23:43 · LAX 07:43 · JFK 10:43
    ♥ Do have faith in what you're doing.