最低SDK版本小于23时,是否可以设置checkSelfPermission?

33

Android-M中的新运行时权限要求最低23个API级别,但我的项目仍需要最低16个API级别。

enter image description here

那么,如何使这段代码更具向前兼容性呢?

敬礼

5个回答

60

5
我也使用Support v4,但是在安卓2.3.3版本的HTC Incredible上,使用ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED会返回false。不知道为什么? - Anonymous
@匿名用户:您的 targetSdkVersion 需要是23或更高。 - CommonsWare
4
它是指在 Android 应用程序中的一个参数,即最低支持 Android 版本为 7,目标支持的 Android 版本为 23。 - Anonymous
@匿名用户,您可能需要将最低SDK版本更改为23。 - Stephen G Tuggy
根据我的经验,在较旧的版本中(我正在测试API v.7),ActivityCompat.checkSelfPermission不会返回已授权的权限。 - Eir

5

在获取检查权限之前,请检查您的Android版本:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    // TODO: Consider calling
                    //    public void requestPermissions(@NonNull String[] permissions, int requestCode)
                    // here to request the missing permissions, and then overriding
                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    //                                          int[] grantResults)
                    // to handle the case where the user grants the permission. See the documentation
                    // for Activity#requestPermissions for more details.
                    return;
                }
            }else{
              //Do Your Stuff
           }

4

我需要的答案!谢谢,兄弟。 - oxied

1
您可以检查构建版本 if(Build.Version.SDK_INT >= Build.VERSION_CODES.MARSHMALLOW)。然后在其中处理棉花糖权限,在其他版本中处理其他事项。

1

checkSelfPermission在sdk 23以上可用。

我们可以使用包管理器检查权限是否可用。

public static Boolean checkpermissions(Activity activity) {


        PackageManager mPackageManager = activity.getPackageManager();
        int hasPermStorage = mPackageManager.checkPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE, activity.getPackageName());


        if (hasPermStorage != PackageManager.PERMISSION_GRANTED) {
            // do stuff
            //Toast.makeText(getApplicationContext(), "No permission", Toast.LENGTH_LONG).show();

            return false;
        } else if (hasPermStorage == PackageManager.PERMISSION_GRANTED) {

            // do stuff
            //Toast.makeText(getApplicationContext(), "Has permission", Toast.LENGTH_LONG).show();

            return true;
        }else
            return false;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接