如何以编程方式禁用SMS通知?

时间:2010-02-15 07:33:23

标签: java android

这不起作用:

try {
    Context mmsContext = context.createPackageContext("com.android.mms", Context.CONTEXT_IGNORE_SECURITY);
    mmsContext.grantUriPermission(context.getPackageName(), 
    Uri.parse("file:///data/data/com.android.mms/shared_prefs/com.android.mms_preferences.xml"), 
    Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(mmsContext);
    Editor editor = settings.edit();
    editor.putBoolean("pref_key_enable_notifications", false);
    editor.commit();
} catch (NameNotFoundException e1) {
    e1.printStackTrace();
}

错误:“未经许可,尝试读取首选项文件/data/data/com.android.mms/shared_prefs/com.android.mms_preferences.xml” 求救!

2 个答案:

答案 0 :(得分:1)

您无法以编程方式禁用SMS通知。请允许用户决定是否应启用短信通知,并允许他们通过适当的设置屏幕对其进行控制。

答案 1 :(得分:0)

通过“你不能”,你的意思是不应该,或者没有干净的方式去做/它没有API吗?或者你的意思是没办法

在大多数情况下,我完全同意您的说法,用户应该能够通过适当的设置屏幕进行控制。但是,遗憾的是,有些情况下没有设置屏幕来切换消息通知。我所知道的一个例子是Samsung Behold II(它取代了默认的消息传递应用程序,并删除了设置/取消设置消息通知的选项)。我正在尝试开发一种方法,因为Behold II所有者已经安装了多个替代MMS / SMS应用程序,并且不希望双重通知。 我尝试使用以下代码直接访问首选项活动,但强制关闭

    final Intent messagesettings = new Intent();
    messagesettings.setClassName("com.android.mms", "com.android.mms.ui.MessagingPreferenceActivity");
    ...
        public void onClick(View view){
            startActivity(messagesettings);
        }

有什么想法吗?