2016-09-28 89 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.重新檢查所有的清單副本,清除緩存等。 –

相關問題