首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NotificationManager所需的权限

NotificationManager所需的权限
EN

Stack Overflow用户
提问于 2016-12-23 22:30:11
回答 4查看 14.3K关注 0票数 3

我正在尝试将Ringer设置为静默,并且仅使用以下命令不干扰优先级

代码语言:javascript
复制
AudioManager myAudioMgr = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
NotificationManager myNOtificationMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

myAudioMgr.setRingerMode(AudioManager.RINGER_MODE_SILENT);
myNOtificationMgr.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_PRIORITY);

我一直有个安全错误

java.lang.RuntimeException:无法启动接收方MyBroadcastReceiver: java.lang.SecurityException:拒绝通知策略访问

我将访问通知策略权限添加到我的Manifest文件中

代码语言:javascript
复制
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

我是不是错过了一个额外的许可?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-23 22:55:11

用户似乎需要通过设置屏幕授予应用程序的权限,以便应用程序通过notifications操纵优先级/静默。我假设您正在为此使用notificationManager类。一些可能帮助您的链接:

设置

变化

我认为从本质上讲,您需要做的是将用户引导到“Show请勿干扰访问设置”,并让他启用通知管理选项(例如,对于模拟位置的操作类似)

样本代码:

代码语言:javascript
复制
startActivityForResult(new Intent(android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS), 0);

希望这能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2016-12-23 22:50:37

来自Android开发者:

通过将用户发送到与系统意图操作设置匹配的活动来请求策略访问。 使用变化侦听用户授予或拒绝此访问。

因此,要获得权限,您应该请求策略访问,方法是将用户发送到与系统意图操作ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS相匹配的活动,并使用带有动作ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS的BroadcastReceiver侦听响应。

还可以查看来自NotificationManager的方法NotificationManager(),以检查是否授予了权限。

票数 0
EN

Stack Overflow用户

发布于 2016-12-23 22:37:14

你需要做一些类似的事情

代码语言:javascript
复制
public class SomeFragment extends FragmentCompat {
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        int permissionNotifications = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission. ACCESS_NOTIFICATION_POLICY);

        if (permissionNotifications != PackageManager.PERMISSION_GRANTED ) {
            ActivityCompat.requestPermissions(
                    getActivity(),
                    new String[] { Manifest.permission.ACCESS_NOTIFICATION_POLICY },
                    PERMISSION_REQUEST
            );
        }
    }
}

请记住,我无法运行这段代码,所以它可能需要一些TLC,但这是一个开始

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41308512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档