2017-06-18 155 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