如何在android中启用“在锁定屏幕中显示”权限
Posted
技术标签:
【中文标题】如何在android中启用“在锁定屏幕中显示”权限【英文标题】:How to enable 'show in lock screen' permission in andriod 【发布时间】:2020-06-14 02:42:19 【问题描述】:这个问题已经被问了两次但没有答案 安装在小米设备上的应用程序需要一个名为“在锁定屏幕上显示”的权限,以便在设备被锁定时允许活动启动 如何提示用户在 android studio 中以编程方式启用此权限,一些消息传递应用程序(如 Messenger、Telegram、Whatapp)已启用此权限 我已经添加了这四个标志,但是如果未授予权限,则不会显示活动
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
提前致谢
【问题讨论】:
您好 Ahmed,我也遇到了同样的问题。你是怎么解决的? @Arjun 我没有,我检查设备是否是小米并显示一条消息,说明如何手动移动到正确的设置并允许它 【参考方案1】:这里是显示如何创建小部件的文档: https://developer.android.com/guide/topics/appwidgets/index.html#lockscreen
您必须创建一个具有设置为
的 标志 的小部件getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
帮助用户在锁屏上进行交互
【讨论】:
我已经添加了这些标志,但在未授予权限时不起作用【参考方案2】:我没有找到请求权限的正确方法,但如果您想手动移动到正确的设置并允许它,这就是方法。我希望它对你有用。
public static void goToNotificationSettings(Context context)
Intent intent = new Intent();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.fromParts(SCHEME, context.getPackageName(), null));
else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1)
intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
intent.putExtra("app_package", context.getPackageName());
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
intent.putExtra("app_package", context.getPackageName());
intent.putExtra("app_uid", context.getApplicationInfo().uid);
else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT)
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:" + context.getPackageName()));
else
return;
context.startActivity(intent);
编辑:
为了检查权限你可以使用这行代码然后调用函数。
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_NOTIFICATION_POLICY) != PackageManager.PERMISSION_GRANTED)
goToNotificationSettings(getActivity());
【讨论】:
以上是关于如何在android中启用“在锁定屏幕中显示”权限的主要内容,如果未能解决你的问题,请参考以下文章
使用android studio运行应用程序时如何启用android 6.0中的所有权限
Flutter - 如何在 android 中自动启用位置服务?