Android:从设置外部更改相机权限会导致应用程序共享首选项清除
Posted
技术标签:
【中文标题】Android:从设置外部更改相机权限会导致应用程序共享首选项清除【英文标题】:Android : Changing camera Permission externally from settings causes apps shared preferences clears 【发布时间】:2017-08-31 00:10:03 【问题描述】:-
打开应用请求相机权限提供权限(共享首选项中保存的数据)
最小化应用,应用进入后台
进入设置页面撤销相机权限
再次回到应用程序导致共享偏好数据为空
【问题讨论】:
你能发布你的代码吗? 不管共享偏好如何,它应该是这样工作的。 可能与撤销权限无关,可能是导致这种情况发生的原因只是关闭并重新打开应用程序,试试这个,执行步骤 1 和 2,然后强制关闭应用程序(从设置)然后执行第 4 步并检查偏好数据 【参考方案1】:对于活动,您应该检查 onCreate 状态或 SplashActivity 中的共享首选项,对于片段,您应该将 sharedPreference 状态传递给 mainactivity 类。
首先检查 sharedPreference 状态并创建一个布尔变量,它将检查清单中的权限,如下所示:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
SharedPreferences prefs = getActivity().getSharedPreferences("ShortCutPrefs", 0);
if (!prefs.getBoolean("isPermitted", false))
if (per == false)
if ((getActivity().checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED))
requestPermissions(new String[]Manifest.permission.READ_PHONE_STATE, 1);
return;
else
if (per == false)
if ((getActivity().checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED))
requestPermissions(new String[]Manifest.permission.READ_PHONE_STATE, 1);
return;
以及权限检查部分:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults)
switch (requestCode)
case 1:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
SharedPreferences prefs = getActivity().getSharedPreferences("ShortCutPrefs", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("isPermitted", true);
editor.commit();
per = true;
setData();
else
Toast.makeText(getActivity(), "Permission denied to check you device details, grant this app permission", Toast.LENGTH_LONG).show();
return;
这样您可以检查是否有人从设置中删除了权限,并在您的应用开始时询问他们。
祝你好运!
【讨论】:
以上是关于Android:从设置外部更改相机权限会导致应用程序共享首选项清除的主要内容,如果未能解决你的问题,请参考以下文章
使用 SurfaceView 的 Android 游戏循环;快速更改相机“镜头”会导致黑色闪光等