2017-06-18 82 views

回答

0

當您以任何方式詢問權限時,在下面的對話框中,打開要求權限的對話框中會出現一個複選框,通過檢查它,OS不會再要求您提供該權限:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
    if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
     } else { 
      ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, RC_WRITE_EXTERNAL_STORAGE); 
     } 
} 
1

不,對不起。您需要跟蹤是否向用戶詢問權限,然後使用該信息確定是否在將來提問。

+0

任何來源?這樣我可以清楚地拋棄這個想法並開始解決方法。 – arunwithasmile

+0

@arunwithasmile:「任何來源?」 - 我無法向您顯示有關不存在的內容的文檔。 – CommonsWare

+0

是的,你是對的。我只是有點希望:) – arunwithasmile

1

如果程序不「拼命」需要權限,則可以使用SharedPreferences並將名爲firstTime的變量存儲爲布爾值true。 然後檢查該變量的onCreate方法。如果是,請詢問權限,然後將該值設置爲false並保存。然後,當用戶重新運行該應用程序時,它不會是「FirstTime」,因此他不會被授予權限。

SharedPreferences pref = this.getSharedPreferences("PACKAGE.NAME",MODE_PRIVATE); 
Boolean firstTime = pref.getBoolean("firstTime",true); 
if(firstTime){ 
//Ask for permissions here 
pref.edit().putBoolean("firstTime",false).apply(); 
} 
+0

我有這個想法,但由於用戶可以通過檢查對話框中的複選框通知操作系統,我想知道是否有任何選項以編程方式傳遞該參數。 – arunwithasmile