2016-07-31 119 views
0

我按照這個鏈接教程能夠讓請求允許在運行時:https://developer.android.com/training/permissions/requesting.html允許請求允許在運行時不工作

,它不工作,我複製相同的代碼,但是有不同的權限「ACCESS_FINE_LOCATION 「

我的代碼作爲活動

int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION); 
if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 


    if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
      Manifest.permission.ACCESS_FINE_LOCATION)) { 

     DialogUtils.showDialogMessage(this, getString(R.string.error), 
       getString(R.string.error_location_permission_not_granted), getString(R.string.ok), getString(R.string.cancel), new OnClickListener() { 
        @Override 
        public void onClick(View view) { 

        /*ContextCompat.requestPermissions(ItemDetailsActivity2.this, 
          new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
          MAP_PERMISSION_REQUEST_CODE);*/ 
        } 
       }, null); 

    } else { 

     ActivityCompat.requestPermissions(this, 
       new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
       MAP_PERMISSION_REQUEST_CODE); 
    } 
} 

的onCreate方法如下

,這是回調方法

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 

    switch (requestCode) { 
     case MAP_PERMISSION_REQUEST_CODE: { 

      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       initalizeMap(); 
      } else { 

       DialogUtils.showDialogMessage(this, getString(R.string.error), getString(R.string.error_location_permission_not_granted), getString(R.string.ok), null); 
      } 
      return; 
     } 
    } 
} 

,這是我的構建配置

compileSdkVersion 23 
buildToolsVersion '23.0.3' 
minSdkVersion 15 
targetSdkVersion 15 

誰能告訴我什麼是我的問題呢?

編輯當我改變了targetSdkVersion至23日在這兩個清單和gradle這個文件,並運行我的應用程序它給了我下面的屏幕,當我按下允許,給了我黑色的屏幕長時間

,並且別做任何事

請問你能告訴我現在有什麼問題嗎?

enter image description here

+0

是的,我在Android 6.0.1版本的設備上運行 –

回答

2

在未來,請詳細解釋什麼是「它不工作」的意思。

在這種情況下,我會猜測「它不工作」意味着「用戶授予對話權限沒有出現」。這是因爲您的targetSdkVersion設置爲15,而不是23或更高。通過擁有targetSdkVersion15,您的意思是您希望獲得傳統權限支持,即用戶必須在安裝時同意所有權限,包括具有dangerousprotectionLevel的權限。

+0

所以你建議我將targetSdkVersion更改爲23? –

+0

@AmiraElsayedIsmail:我不知道你爲什麼將它設置爲15.如果你想讓運行時權限工作,你需要將它提高到至少23.但是,你可能需要對代碼進行其他更改一旦你這樣做。您需要查看[VERSION_CODES'在16和23之間]的JavaDocs(https://developer.android.com/reference/android/os/Build.VERSION_CODES.html),以查看您可能需要修改的其他內容。 – CommonsWare

+0

請檢查我的編輯。 –