Android 更新Play Store上的应用程序(sdk 23)时出错

Android 更新Play Store上的应用程序(sdk 23)时出错,android,google-play-services,Android,Google Play Services,我正在Play Store上提交我的应用程序(sdk 23)的更新版本,并在Beta Tester中发布该部分时给出此权限错误 我已经使用sdk 23的requestPermission进行了更改: if (Utils.isMarshmallow()) { if (ContextCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.P

我正在Play Store上提交我的应用程序(sdk 23)的更新版本,并在Beta Tester中发布该部分时给出此权限错误

我已经使用sdk 23的
requestPermission
进行了更改:

if (Utils.isMarshmallow()) {
    if (ContextCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                ContextCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(activity, new String[] {android.Manifest.permission.ACCESS_COARSE_LOCATION},
                    Utils.MY_PERMISSION_ACCESS_COARSE_LOCATION);
    }
}
但考虑到Android sdk<23的设备,我的清单如下所示:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> `
仍在获取错误消息:

无法使用旧式权限(SDK 22及更低版本)将以前使用M权限(SDK 23及更高版本)的设备降级为APK。这发生在将版本32(23 SDK)更改为版本29(SDK 19)时


清单和/或内部版本中的targetSdkVersion应为23或更大。

清单和/或内部版本中的targetSdkVersion应为23或更大。

targetSdkVersion应为23或更大。

您还需要请求运行时许可才能写入外部存储

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//检查是否需要权限

       if (!checkPermission()) {
            requestPermission();
        } else {
//perform your task      
  }



private boolean checkPermission () {
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
                return true;
            }
            for (String permission : REQUEST_PERMISSIONS) {
                if (ActivityCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
                    return false;
                }
            }


            return true;
        }
    private void requestPermission () {
        ActivityCompat.requestPermissions(this, REQUEST_PERMISSIONS, REQUEST_PERMISSION_CODE);
    }

    @Override
    public void onRequestPermissionsResult ( int requestCode, @NonNull String[] permissions,
    @NonNull int[] grantResults){
        if (requestCode == REQUEST_PERMISSION_CODE) {
            if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                //perform your task
            }
        }
    }
if(!checkPermission()){
requestPermission();
}否则{
//完成你的任务
}
私有布尔检查权限(){
if(Build.VERSION.SDK_INT
您还需要请求写入外部存储的运行时权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//检查是否需要权限

       if (!checkPermission()) {
            requestPermission();
        } else {
//perform your task      
  }



private boolean checkPermission () {
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
                return true;
            }
            for (String permission : REQUEST_PERMISSIONS) {
                if (ActivityCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
                    return false;
                }
            }


            return true;
        }
    private void requestPermission () {
        ActivityCompat.requestPermissions(this, REQUEST_PERMISSIONS, REQUEST_PERMISSION_CODE);
    }

    @Override
    public void onRequestPermissionsResult ( int requestCode, @NonNull String[] permissions,
    @NonNull int[] grantResults){
        if (requestCode == REQUEST_PERMISSION_CODE) {
            if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                //perform your task
            }
        }
    }
if(!checkPermission()){
requestPermission();
}否则{
//完成你的任务
}
私有布尔检查权限(){
if(Build.VERSION.SDK_INT
不知何故,实际使用的值似乎是19。重新检查所有清单副本、清除缓存等。不知何故,实际使用值似乎为19。重新检查所有清单副本、清除缓存等。这个答案非常重要,应该放在Android开发者文档中。自从API23以来,很难理解Android开发者关于权限的文档,我认为开发者文档太政治化了(有点政治化是可以的,但缺乏动手能力)。我完全出乎意料。这是一个非常清晰易懂的工作答案。这个示例代码比一页页的文本要清晰得多。这个答案非常重要,应该放在Android开发者文档中。自从API23以来,很难理解Android开发者关于权限的文档,我认为开发者文档太政治化了(有点政治化是可以的,但缺乏动手能力)。我完全出乎意料。这是一个非常清晰易懂的工作答案。这个示例代码比一页页的文本清晰得多。