Как отключить смс уведомления программно? - PullRequest
1 голос
/ 15 февраля 2010

Это не работает:

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 ]

1 голос
/ 15 февраля 2010

Вы не можете отключить SMS-уведомления программно. Пожалуйста, позвольте пользователю решать, следует ли включать SMS-уведомления, и разрешите ему управлять им через соответствующий экран настроек.

0 голосов
/ 03 июля 2010

Под "вы не можете" вы имеете в виду, что не следует , или нет чистого способа сделать это / для этого нет 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);
        }

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...