判断应用程序获取华为通知栏权限限是否开启,以及如何跳转

android应用的通知状态的获取
[问题点数:40分]
本版专家分:0
CSDN今日推荐
本版专家分:0
本版专家分:0
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐
支持API19以上,努比亚手机好像不行
public boolean isNotificationEnable(Context context){
AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(APP_OPS_SERVICE);
ApplicationInfo appInfo
通知适用于应用不在前台运行的状态下,给用户的一种提醒方式。先上布局文件
activity.xml&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&http://schemas.android.com/apk/res/android&
xmlns:tools=&http://schemas.android.
1.创建一个activity用于传入notification的内容
http://schemas.android.com/apk/res/android&
xmlns:tools=&http://schemas.android.com/tools&
android:orientation=&vertical&
android:layout_width=&match_
Android O上的通知相关更新带有横线的选项表示有二级菜单点击横线上端的图标表示开关改功能,点击横线下面的文字表示打开二级菜单。更加紧凑直观的操作方式。应用通知权限更改
需要应用支持,对于应用发送的不同类型的通知进行管理,以净化与用户交互的方式和减少能耗。
同时也支持通过后台限制应用的推送功能来延长设备续航。
参考自Android O预览版上手:请给安卓厂商一个升级的理由Notificat
在android应用中,有时候会用到系统通知是否开启的状态,以便进行下一步操作,所以,获取到状态是很有必要的,之前一直苦于找不到合适的方法来解决,因为毕竟涉及到系统,不好办,今日看到大神支招,试了一下,很好用,贴出来,大家看,干了这碗安利!
有图有真相,首先到设置里边关闭该应用的通知开关:然后在应用中,点击按钮,获取状态:这时候,回到设置里,打开通知按钮:再次点击应用中的测试按钮,可以看到,通知已经
Android4.4以上://判断应用是否开启了通知权限 4.4以上可用,4.4以下默认返回true
NotificationManagerCompat manager = NotificationManagerCompat.from(MainActivity.this);
boolean isOpened = manager.areNotificationsEna...
最近经常有业务部的同事,投诉出错后什么提示都没有,仔细检查好发现是坑爹的他们自己把显示通知这个按钮关闭了,就是下面这个东西
关闭之后通知和toast都不显示了,于是老大让我去找找有没有办法检测这个按钮的状态,先把检测代码贴上/**
* @param context
* @return true 代表有有权限,或者检测失败
返回false代表没有权限
据说从4.1之后android的设置中就多了一个通知和状态栏,可以在其中对每个应用的通知进行管理,但是并没能找到如何获取应用通知状态开关的方法,故在此求教。
在移动应用的开发中,我们经常会遇到定时提醒用户的需求,比如:电影票预订后在电影开始前两个小时提醒用户电影时间。
我的思路大致如下:
1.使用AlarmManager设置闹钟
既然要使用定时服务,那么自然第一个想到的是闹钟。AlarmManager可在指定的时间或者指定周期启动其他组件(包括Activity、Service、BroadcastReceiver)。
// 指定启动A
Android 卸载应用比较简单:
packageName 为你和
Uri uri = Uri.parse(&package:&+packageName);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DELETE);
intent.setData(uri);判断iOS设备的PUSH通知设置状态(打开。。。/关闭)
typedef NS_OPTIONS(NSUInteger, UIRemoteNotificationType) {
UIRemoteNotificationTypeNone
UIRemoteNotificationTypeBadge
UIRemoteNotificationTypeSound
UIRemoteNotificationTypeAlert
UIRemoteNotificationTypeNewsstandContentAvailability = 1 && 3,
} NS_ENUM_AVAILABLE_IOS(3_0);
UIRemoteNotificationTypeNone = 0,
UIRemoteNotificationTypeBadge = 1,
UIRemoteNotificationTypeSound = 2,
UIRemoteNotificationTypeAlert = 4,
UIRemoteNotificationTypeNewsstandContentAvailability = 8
通过 UIRemoteNotificationType type = [[UIApplication
sharedApplication] enabledRemoteNotificationTypes];可以得知type的值,根据type的值可以判断出用户在通知设置中是如何设置的。
比如:type = 3,那么用户打开的是UIRemoteNotificationTypeBadge和UIRemoteNotificationTypeSound;
type = 6,那么用户打开的是UIRemoteNotificationTypeSound和UIRemoteNotificationTypeAlert,
以此类推即可~
没有更多推荐了,android应用获取通知栏权限
android应用获取手机是否有通知栏的权限:
package com.jibo.health.
import android.app.AppOpsM
import android.content.C
import android.content.pm.ApplicationI
import java.lang.reflect.F
import java.lang.reflect.InvocationTargetE
import java.lang.reflect.M
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.
Class appOpsClass =
/* Context.APP_OPS_MANAGER */
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);
(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();
没有更多推荐了,Android 检查用户权限是否开启
import android.app.A
import android.content.C
import android.content.pm.PackageM
import android.support.design.widget.S
import android.support.v4.app.ActivityC
import android.view.V
* Created by yx on .
public class CheckPermission {
Context mC
View rootV
public CheckPermission(Context context, View rootView) {
this.mContext =
this.rootView = rootV
private void check(String permission) {
if (ActivityCompat.checkSelfPermission(mContext, permission)
!= PackageManager.PERMISSION_GRANTED) {
requesetContanctsPermissions(permission);
private void requesetContanctsPermissions(String permission) {
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) mContext,permission)) {
Snackbar.make(rootView, "此应用必须获取以上权限", Snackbar.LENGTH_INDEFINITE).setAction("确定", new View.OnClickListener() {
public void onClick(View v) {
}).show();
没有更多推荐了,android进阶之路
Android 判断应用程序获取通知栏权限是否开启,以及如何跳转到应用程序设置界面
Android如何判断通知栏权限是否开启:
起先我是想通过app手动检测权限是否开启,进行动态设置及:
//检测权限是否开启
ContextCompat.checkSelfPermission()
//设置权限
ActivityCompat.requestPermissions();
但是我查阅的好些资料,都没有查到其权限名是什么,貌似没有。无奈只有放弃这种方式
检测通知栏权限是否开启
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private boolean isNotificationEnabled(Context context) {
String CHECK_OP_NO_THROW = "checkOpNoThrow";
String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";
AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
ApplicationInfo appInfo = context.getApplicationInfo();
String pkg = context.getApplicationContext().getPackageName();
int uid = appInfo.
Class appOpsClass =
/* Context.APP_OPS_MANAGER */
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 = (Integer) opPostNotificationValue.get(Integer.class);
return ((Integer) checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg) == AppOpsManager.MODE_ALLOWED);
} catch (Exception e) {
e.printStackTrace();
当通知栏权限未开启时跳转到自身的设置界面
private void toSetting() {
Intent localIntent = new Intent();
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT &= 9) {
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
localIntent.setData(Uri.fromParts("package", getPackageName(), null));
} else if (Build.VERSION.SDK_INT &= 8) {
localIntent.setAction(Intent.ACTION_VIEW);
localIntent.setClassName("com.android.settings", "com.android.setting.InstalledAppDetails");
localIntent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
startActivity(localIntent);
没有更多推荐了,}

我要回帖

更多关于 oppo通知栏权限在哪里设置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信