这不起作用:
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” 求救!
答案 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);
}
有什么想法吗?