2016-02-19 42 views
-2

這裏是我的清單:我設置在明顯的權限,但必須手動啓用`marshmallow`

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 

這是所有我需要爲我的項目,但我需要它的代碼,而不是手動在應用程序設置。

+1

提供更多的細節......你應該手動啓用??? –

+0

在應用程序設置是有權限的選項,我必須在那裏設置權限 –

+0

這將幫助你。你可以檢查用戶是否選中了複選框'永不再問'http://manidesto.github.io/permissions-in-mahmahmallow –

回答

1

要在棉花糖中使用新的權限模型,您需要同時在清單中指定您的權限(與您一樣)並在運行時請求權限。只有被視爲「危險」的權限才需要運行時請求。危險的是定義爲:

,將給予在可 負面影響用戶設備中的請求的應用程序 進入私人用戶數據或控制高風險的權限。由於此類權限引入潛在風險,系統可能不會自動將其授予請求應用程序的 。例如,應用程序所請求的任何危險許可 可能會顯示給用戶,並且在繼續之前需要確認 確認,或者可能採取某些其他方法以避免用戶自動允許使用此類設施。
來源:https://developer.android.com/guide/topics/manifest/permission-element.html

這裏,如果你需要申請許可,檢查代碼的例子。 (請記住,即使用戶授予您的許可要求,他們以後可以撤銷它在應用程序設置,所以你需要在每次你需要它的時候檢查。)

private final int REQUEST_PERMISSION_ACCESS_FINE_LOCATION=1; 

private void requestAccessLocationPermission() { 
    int permissionCheck = ContextCompat.checkSelfPermission(
      this, Manifest.permission.ACCESS_FINE_LOCATION); 
    if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
       Manifest.permission.ACCESS_FINE_LOCATION)) { 
      showExplanation("Permission Needed", "Rationale", Manifest.permission.ACCESS_FINE_LOCATION, REQUEST_PERMISSION_ACCESS_FINE_LOCATION); 
     } else { 
      requestPermission(Manifest.permission.ACCESS_FINE_LOCATION, REQUEST_PERMISSION_ACCESS_FINE_LOCATION); 
     } 
    } else { 
     Toast.makeText(MainActivity.this, "Permission (already) Granted!", Toast.LENGTH_SHORT).show(); 
    } 
} 

@Override 
public void onRequestPermissionsResult(
     int requestCode, 
     String permissions[], 
     int[] grantResults) { 
    switch (requestCode) { 
     case REQUEST_PERMISSION_ACCESS_FINE_LOCATION: 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       Toast.makeText(MainActivity.this, "Permission Granted!", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(MainActivity.this, "Permission Denied!", Toast.LENGTH_SHORT).show(); 
      } 
    } 
} 
相關問題