2017-12-01 5 views
0

これは、DNDの許可を要求する通常の方法である:Samsung S5(SM-G800H)のDo Not Disturbのアクセス権を要求する方法は?

Intent intent = new Intent(); 
intent.setAction("android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS"); 
startActivityForResult(intent, NOTIFICATION_REQUEST_CODE); 

は、しかし、(少なくとも一つの)サムスンSM-G800HにこれはActivityNotFoundExceptionをスローします。

明らかにそのモデルには「ブロッキングモード」と呼ばれるものがあります。誰もが正しいインテント/そのモデルを扱う方法を知っていますか? メーカー:サムスン モデル:SM-G800H ボード:Msm8228 AndroidのAPI:23 アンドロイドOS:6.0.1 ブランド:サムスン RAM: https://www.cnet.com/uk/how-to/where-to-find-do-not-disturb-mode-on-the-galaxy-s5/

デバイスの詳細を参照してください1.35ギガバイト 向き:縦

答えて

1

これはSamsung関連の問題ではない可能性があります。公式の文書によると、ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGSはAPI 23+(マシュマロ)でのみ利用可能です。あなたがテストしているS5にAndroid 6 Marshmallowが動作していますか?もしそうでなければ、それはあなたの問題です。

EDIT:このアクティビティはAndroid 6であっても各端末には存在しない可能性があるため、その意図を解決できない場合があります。したがって、このようなものはあなたが望むものかもしれません:

PackageManager packageManager = getActivity().getPackageManager(); 

Intent intent = new Intent(); 
intent.setAction("android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS"); 

if (intent.resolveActivity(packageManager) != null) { 
    startActivityForResult(intent, NOTIFICATION_REQUEST_CODE); 
} else { 
    Log.d(TAG, "No Intent available to handle action"); 
} 
+0

はい、コードパスはAPI 23+です。私はそれ以外の場合はおそらくそれを把握することができますbtwをテストしていないよ。これはFirebaseを通じて報告されたライブアプリからのクラッシュです。コードを 'intent.setAction(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);に変更しましたが、とにかく代わりにヌルポインタ例外が発生します。しかし、意志のための賢明なまだ。 – Ewan

+0

答えを更新しました。その活動を開始しようとする前にそのインテントを解決できるかどうかをテストする必要があると思います。 – Glaucus

+0

はい、私は既に'ActivityNotFoundException'をキャッチするようにコードを変更しました。私はあなたが今後のS5で使用されている意図を知っていると思います... – Ewan

関連する問題