2016-09-28 120 views
0

我在Play商店提交了我应用程序的更新版本(sdk 23),并且在必须在Beta测试器中发布该部分时出现此权限错误。在Play商店更新应用程序(sdk 23)时出错

我已经做了requestPermission变化的SDK 23:

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"/> ` 

我的build.gradle是:

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 
    defaultConfig { 
     applicationId "br.com.app.vertz" 
     minSdkVersion 14 
     targetSdkVersion 23 
     versionCode 36 
     versionName "2.8" 
    } 
... 

仍然收到错误消息:

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

回答

1

你要问运行许可WRITE_EXTERNAL_STORAGE也

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

//声明权限,并请求代码

private static final String[] REQUEST_PERMISSIONS = new String[]{ 
      Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION 
    }; 
    private static final int REQUEST_PERMISSION_CODE = 007; 

//检查是否需要权限

 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 
      } 
     } 
    } 
+0

非常感谢!有用!!! – JamesMartins

1

targetSdkVersion在您的清单和/或build.gradle应该是23或更大。

+0

但我的更新是sdk 23.我更新了我的问题。 – JamesMartins

+0

不知怎的,实际使用的值似乎是19.重新检查所有的清单副本,清除缓存等。 –

相关问题