Java 如何以编程方式禁用SMS通知?
这不起作用:Java 如何以编程方式禁用SMS通知?,java,android,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.and
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”
救命啊 您不能以编程方式禁用SMS通知。请允许用户决定是否应启用SMS通知,并允许他们通过相应的设置屏幕进行控制。您不能以编程方式禁用SMS通知。请允许用户决定是否应启用SMS通知,并允许他们通过相应的设置屏幕进行控制。您的“不能”是指您不应该启用SMS通知,还是说没有干净的方法/没有API?或者你真的是说没有办法 在大多数情况下,我完全同意您的观点,即用户应该能够通过适当的设置屏幕进行控制。然而,不幸的是,在某些情况下,没有设置屏幕来切换消息通知。我知道的一个例子是Samsung Watch II(它取代了默认的消息应用程序,并删除了设置/取消设置消息通知的选项)。我正试图找到一种方法来解决这个问题,因为安装了替代彩信/短信应用程序的Watch II用户已经多次提出请求,他们不希望收到双重通知。 我尝试使用以下代码直接访问首选项活动,但它强制关闭
final Intent messagesettings = new Intent();
messagesettings.setClassName("com.android.mms", "com.android.mms.ui.MessagingPreferenceActivity");
...
public void onClick(View view){
startActivity(messagesettings);
}
有什么想法吗?你说的“你不能”,是指你不应该,还是说没有干净的方法可以做到这一点/没有API?或者你真的是说没有办法
在大多数情况下,我完全同意您的观点,即用户应该能够通过适当的设置屏幕进行控制。然而,不幸的是,在某些情况下,没有设置屏幕来切换消息通知。我知道的一个例子是Samsung Watch II(它取代了默认的消息应用程序,并删除了设置/取消设置消息通知的选项)。我正试图找到一种方法来解决这个问题,因为安装了替代彩信/短信应用程序的Watch II用户已经多次提出请求,他们不希望收到双重通知。
我尝试使用以下代码直接访问首选项活动,但它强制关闭
final Intent messagesettings = new Intent();
messagesettings.setClassName("com.android.mms", "com.android.mms.ui.MessagingPreferenceActivity");
...
public void onClick(View view){
startActivity(messagesettings);
}
有什么想法吗?爱立信的人说“android.provider.Telephony.SMS_收到的短信在1.6版之前都是无序的广播,因此应用程序无法阻止短信进入收件箱”,但安卓1.6+呢?爱立信的人说“android.provider.Telephony.SMS_收到的短信在1.6版之前都是无序广播,因此应用程序无法阻止短信进入收件箱”,但android 1.6+呢?