我在我的測試設備上安裝了Android N Developer預覽版,我在應用程序啓動期間要求運行時許可。Android N權限問題
但不幸的是,該應用程序不顯示警報對話框來授予權限。我使用下面的代碼:
啓動活動
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
if(checkPermissions()) {
renderView();
}
}
private boolean checkPermissions() {
int permissionWriteStorage = ContextCompat.checkSelfPermission(this, Manifest.permission_group.STORAGE);
int permissionPhoneState = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
Log.i("permission",(permissionWriteStorage == PackageManager.PERMISSION_GRANTED) + "");
//This prints false
List<String> listPermissionsNeeded = new ArrayList<>();
if (permissionWriteStorage != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission_group.STORAGE);
}
if (permissionPhoneState != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.READ_PHONE_STATE);
}
if (!listPermissionsNeeded.isEmpty()) {
Log.i("permission", "in if");
//I get this in the logs
ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]),REQUEST_ID_MULTIPLE_PERMISSIONS);
return false;
}
return true;
}
}
的build.gradle
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 24
buildToolsVersion "23.0.3"
defaultConfig {
applicationId 'com.***.***'
minSdkVersion 16
targetSdkVersion 24
}
}
編輯:溶液(1/2)
通過改變構建工具版本爲24.0.1
我是ge爲READ_PHONE_STATE
權限提供警報,但不允許授權組STORAGE
。 我們是否需要分別詢問權限組的每個權限?
編輯2:溶液(2/2)
我管理通過與Manifest.permission.WRITE_EXTERNAL_STORAGE
Manifest.permission_group.STORAGE
替換來解決它。根據文檔,您只需要確認整個組的一個危險許可。
用戶只需爲每個權限組授予一次權限。如果您的應用程序請求該組中的任何其他權限(列在您的應用程序清單中),系統會自動授予它們。
將'buildtoolsVersion'更改爲'24.0。 1'幫助了我,現在我得到了'READ_PHONE_STATE'的對話框,但是沒有權限組'STORAGE' –
@ PrerakSola,試試這個。很多時候沒有得到值(LoginActivity.this,...) – mujjuraja
我能解決方法是用'Manifest.permission.WRITE_EXTERNAL_STORAGE'替換'Manifest.permission_group.STORAGE'。 –