Android如何獲取系統(tǒng)通知的開啟狀態(tài)詳解
前言
大家應該都有所體會,平常在android應用中,有時候會用到系統(tǒng)通知是否開啟的狀態(tài),以便進行下一步操作,所以,獲取到狀態(tài)是很有必要的,之前一直苦于找不到合適的方法來解決,因為畢竟涉及到系統(tǒng),不好辦,今日看到大神支招,試了一下,很好用,話不多少了,來一起看看詳細的介紹吧。
有圖有真相,首先到設置里邊關(guān)閉該應用的通知開關(guān):

然后在應用中,點擊按鈕,獲取狀態(tài):

這時候,回到設置里,打開通知按鈕:

再次點擊應用中的測試按鈕,可以看到,通知已經(jīng)可用了:

代碼量很少,但是很精辟,就一個工具類,用到了java反射原理:
public class NotificationsUtils {
private static final String CHECK_OP_NO_THROW = "checkOpNoThrow";
private static final String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";
public static boolean isNotificationEnabled(Context context) {
AppOpsManager mAppOps = (AppOpsManager)
context.getSystemService(Context.APP_OPS_SERVICE);
ApplicationInfo appInfo = context.getApplicationInfo();
String pkg = context.getApplicationContext().getPackageName();
int uid = appInfo.uid;
Class appOpsClass = null; /* Context.APP_OPS_MANAGER */
try {
appOpsClass = Class.forName(AppOpsManager.class.getName());
Method checkOpNoThrowMethod = appOpsClass.getMethod(CHECK_OP_NO_THROW, Integer.TYPE, Integer.TYPE, String.class);
Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);
int value = (int)opPostNotificationValue.get(Integer.class);
return ((int)checkOpNoThrowMethod.invoke(mAppOps,value, uid, pkg) == AppOpsManager.MODE_ALLOWED);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return false;
}
}
總結(jié)
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Android中ACTION_CANCEL的觸發(fā)機制與滑出子view的情況
這篇文章主要介紹了Android中ACTION_CANCEL的觸發(fā)機制與滑出子view的情況,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
Android compose氣泡升起和水滴下墜動畫實現(xiàn)示例
這篇文章主要為大家介紹了Android compose氣泡升起和水滴下墜動畫實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Android使用Circular Reveal動畫讓頁面跳轉(zhuǎn)更炫酷
本篇文章主要介紹了Android使用Circular Reveal動畫讓頁面跳轉(zhuǎn)更炫酷,具有一定的參考價值,有興趣的可以了解一下2017-08-08
Android開發(fā)環(huán)境安裝和配置圖文教程
輕松搞定Android開發(fā)環(huán)境部署,這篇文章主要為大家詳細介紹了Android開發(fā)環(huán)境安裝和配置圖文教程,感興趣的小伙伴們可以參考一下2016-06-06
Android在類微信程序中實現(xiàn)藍牙聊天功能的示例代碼
這篇文章主要介紹了Android在類微信程序中實現(xiàn)藍牙聊天功能,本文通過實例代碼給大家介紹的非常想詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Android 獲取屏幕高度,標題高度,狀態(tài)欄高度(實例代碼)
getWindow().findViewById(Window.ID_ANDROID_CONTENT)這個方法獲取到的view就是程序不包括標題欄的部分,然后就可以知道標題欄的高度了2013-11-11
Android開發(fā)之merge結(jié)合include優(yōu)化布局
這篇文章主要為大家詳細介紹了Android開發(fā)之merge結(jié)合include優(yōu)化布局,感興趣的朋友可以參考一下2016-06-06

