Android开发实现判断通知栏是否打开及前往设置页面的方法
本文实例讲述了Android开发实现判断通知栏是否打开及前往设置页面的方法。分享给大家供大家参考,具体如下:
项目中用到日程提醒功能,如果应用的通知栏没有打开,则需要提示用户前去打开通知栏,判断通知栏是否打开代码如下:
privatebooleanisNotificationEnabled(Contextcontext){ StringCHECK_OP_NO_THROW="checkOpNoThrow"; StringOP_POST_NOTIFICATION="OP_POST_NOTIFICATION"; AppOpsManagermAppOps=(AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE); ApplicationInfoappInfo=context.getApplicationInfo(); Stringpkg=context.getApplicationContext().getPackageName(); intuid=appInfo.uid; ClassappOpsClass=null; /*Context.APP_OPS_MANAGER*/ try{ appOpsClass=Class.forName(AppOpsManager.class.getName()); MethodcheckOpNoThrowMethod=appOpsClass.getMethod(CHECK_OP_NO_THROW,Integer.TYPE,Integer.TYPE, String.class); FieldopPostNotificationValue=appOpsClass.getDeclaredField(OP_POST_NOTIFICATION); intvalue=(Integer)opPostNotificationValue.get(Integer.class); return((Integer)checkOpNoThrowMethod.invoke(mAppOps,value,uid,pkg)==AppOpsManager.MODE_ALLOWED); }catch(ClassNotFoundExceptione){ e.printStackTrace(); }catch(NoSuchMethodExceptione){ e.printStackTrace(); }catch(NoSuchFieldExceptione){ e.printStackTrace(); }catch(InvocationTargetExceptione){ e.printStackTrace(); }catch(IllegalAccessExceptione){ e.printStackTrace(); } returnfalse; }
返回值为true时,通知栏打开,false未打开。
以下代码为前往设置页面:
privatevoidgoToSet(){ if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.BASE){ //进入设置系统应用权限界面 Intentintent=newIntent(Settings.ACTION_SETTINGS); startActivity(intent); return; }elseif(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){//运行系统在5.x环境使用 //进入设置系统应用权限界面 Intentintent=newIntent(Settings.ACTION_SETTINGS); startActivity(intent); return; } }
注:测试功能时发现,若在应用设置中关闭app的通知栏/不勾选显示通知,则Toast无法显示
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。