【问题标题】:How to put essential permissions for an app in above Android 5.1?如何为 Android 5.1 以上的应用设置必要的权限?
【发布时间】:2016-06-27 20:17:30
【问题描述】:

我是新手。

我的应用具有存储权限,对于 5 以下的所有 api 都运行良好。

(这些用于浏览按钮选择文件或文件夹,然后执行指定的操作)

权限是(在 AndroidManifest.xml 文件中):

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

我想知道如何在运行时为 5.1 以上的 API 授予“存储”权限。

我到现在为止做了什么?:我在网上搜索过,但没有完整的答案,详细的,存储权限。

所有答案将不胜感激。

并且这个问题不是Run-time permission of Marshmallow 的重复,因为那是关于:如何处理“不再询问”但我问了这个问题,因为我没有得到任何详细的完整描述对于新手存储权限

【问题讨论】:

标签: android permissions android-permissions


【解决方案1】:

您可以这样授予您的权限:

public  boolean isStoragePermissionGranted() {
    if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
                == PackageManager.PERMISSION_GRANTED) {
            Log.v(TAG,"Permission is granted");
            return true;
        } else {

            Log.v(TAG,"Permission is revoked");
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
            return false;
        }
    }
    else { //permission is automatically granted on sdk<23 upon installation
        Log.v(TAG,"Permission is granted");
        return true;
    }


}

要检查权限回调,请使用:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
        Log.d(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]);
        //resume tasks needing this permission
    }
}

【讨论】:

  • @CrazyAndriod:我有一个 MainActivity.java 和其他一些片段(与 Navigation Drawer 一起使用),你能告诉我,把这段代码放在哪里,我想在第一次获得必要的权限并且然后只检查。
  • 你可以在你的Activity或者Fragment中写方法或者你可以创建一个AppUtil类,你可以很容易的把上面的方法变成静态的。@Bati
【解决方案2】:

尝试使用 if else 条件来检查任何特定手机的版本

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            // your code
        }

【讨论】:

    【解决方案3】:

    那么您是说为 Andorid 6.0+ 添加 Rumtime 权限吗?

    如果是,this page shows you how to implement them

    请参阅this StackOverflow post 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2018-02-12
      相关资源
      最近更新 更多