以编程方式访问应用程序通知

时间:2016-06-30 13:27:30

标签: android android-notifications android-settings

在Android应用中,我有一个按钮,我想要具有打开应用通知设置的功能(在Android设置中)。

Screenshot of Android's notification settings for the Camera application

我可以使用此

打开Android设置
startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);

但我想直接在我的应用通知设置

上打开

替代

如果有办法转动"阻止通知"以编程方式打开和关闭也可以。

3 个答案:

答案 0 :(得分:10)

没有公开的API可以让您直接深入链接到应用程序的通知设置。

您可以使用Settings.ACTION_APPLICATION_DETAILS_SETTINGS深层链接到您的应用程序设置,但这不会直接带您进入通知屏幕。

Any way to link to the Android notification settings for my app?有一个可行的解决方案,但由于它不是官方API的一部分,因此无法保证在所有设备或Android的未来版本上运行。

  

如果有办法转动"阻止通知"以编程方式打开和关闭也可以

绝对不是。允许应用程序以编程方式打开和关闭它的通知会使用户无法控制打开和关闭通知。

答案 1 :(得分:8)

我知道这是一个老问题,但对于那些在未来发现它的人:从Oreo(API级别26)开始,现在有一个官方的深层链接<table> <tr> <td></td> <td>1</td> <td>2</td> <td>3</td> <td>4</td> <td>5</td> <td>6</td> <td>7</td> <td>8</td> <td>9</td> <td>10</td> </tr> <tr> <td>Criteria 1</td> <td><input type="radio" name="experiencebx1" required value="1" id="experiencebx1_1" /></td> <td><input type="radio" name="experiencebx1" value="2" id="experiencebx1_2" /></td> <td><input type="radio" name="experiencebx1" value="3" id="experiencebx1_3" /></td> <td><input type="radio" name="experiencebx1" value="4" id="experiencebx1_4" /></td> <td><input type="radio" name="experiencebx1" value="5" id="experiencebx1_5" /></td> <td><input type="radio" name="experiencebx1" value="6" id="experiencebx1_6" /></td> <td><input type="radio" name="experiencebx1" value="7" id="experiencebx1_7" /></td> <td><input type="radio" name="experiencebx1" value="8" id="experiencebx1_8" /></td> <td><input type="radio" name="experiencebx1" value="9" id="experiencebx1_9" /></td> <td><input type="radio" name="experiencebx1" value="10" id="experiencebx1_10" /></td> </tr> <tr> <td>Comments: </td> <td colspan="10"><textarea required name="Comments"></textarea> </td> </tr> </table>用于特定应用的通知设置。

Intent

Intent settingsIntent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) .putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()) .putExtra(Settings.EXTRA_CHANNEL_ID, MY_CHANNEL_ID); startActivity(settingsIntent); 参数是可选的,根据the docs,将“突出显示该频道”。 FWIW,从Android 8.1开始,我看不出它有什么不同。

答案 2 :(得分:0)

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);