Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式禁用SMS通知?_Java_Android - Fatal编程技术网

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+呢?