2017-08-31 117 views
0

我要求ACCESS_COARSE_LOCATION權限,但沒有顯示對話框。請求授予權限時,不會顯示requestpermission對話框

這裏是我的代碼:

if (!checkPermissions()) { 
    requestPermissions(); 
} else { 
    getLastLocation(); 
} 

這裏的requestPermission()

private void requestPermissions() { 
     boolean shouldProvideRationale = 
       ActivityCompat.shouldShowRequestPermissionRationale(this, 
         Manifest.permission.ACCESS_COARSE_LOCATION); 

     // Provide an additional rationale to the user. This would happen if the user denied the 
     // request previously, but didn't check the "Don't ask again" checkbox. 
     if (shouldProvideRationale) { 
      Log.i(TAG, "Displaying permission rationale to provide additional context."); 

      AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this); 
      builder1.setMessage("Location permission is needed in order to show your current location"); 
      builder1.setCancelable(true); 

      builder1.setPositiveButton(
        "OK", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, 
            PERMISSION_REQUEST_RECORD_AUDIO); 
         } 
        }); 

      AlertDialog alert11 = builder1.create(); 
      alert11.show(); 

     } else { 
      Log.i(TAG, "Requesting permission"); 
      // Request permission. It's possible this can be auto answered if device policy 
      // sets the permission in a given state or the user denied the permission 
      // previously and checked "Never ask again". 
      ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 
        REQUEST_PERMISSIONS_REQUEST_CODE); 
     } 
    } 

我得到08-31 13:02:25.067 8231-8231/com.appName.app/com.appName.app.MainActivity: Requesting permission打印出來,但沒有對話框詢問許可顯示出來。

這是怎麼發生的?

回答

0

很抱歉的愚蠢的錯誤。

我想出了這個問題。我忘了在AndroidManifest.xml中添加<uses-permission>標籤。

添加:

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

AndroidManifest.xml<manifest>標籤做的工作。

0

試試這個

String permission = android.Manifest.permission.ACCESS_FINE_LOCATION; 
     if (ActivityCompat.checkSelfPermission(SearchCityClass.this, permission) 
       != PackageManager.PERMISSION_GRANTED && ActivityCompat. 
       checkSelfPermission(SearchCityClass.this, android.Manifest.permission.ACCESS_COARSE_LOCATION) 
       != PackageManager.PERMISSION_GRANTED) { 
      ActivityCompat.requestPermissions(SearchCityClass.this, new String[] 
        {permission}, 123); 

     } 

現在處理permisiion結果

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
             @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if (requestCode == PERMISSION_GPS_CODE) { 
     if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 


      Toast.makeText(this, "location_permission_granted ", Toast.LENGTH_SHORT).show(); 

     } else { 

      Toast.makeText(this, "location_permission_not_granted ", Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 

不要忘記在manifest文件中添加此權限

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