1、下載jar包或者aar包(下載到的壓縮包里面有libs目錄里面是已經編譯好的jar包和aar包,直接拿來就能放到專案里用,內部做了Android8.0適配)
除了libs目錄另外一個當然就是demo原始碼和這個通知欄訊息工具類原始碼
下載地址:https://wws.lanzoui.com/i62POq4twkb
2、判斷并開啟通知訊息權限
boolean enabled = isNotificationEnabled();
if (!enabled) {
/**
* 跳到通知欄設定界面
* @param context
*/
Intent localIntent = new Intent();
//直接跳轉到應用通知設定的代碼:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
localIntent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
localIntent.putExtra("app_package", getPackageName());
localIntent.putExtra("app_uid", getApplicationInfo().uid);
} else if (android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
localIntent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
localIntent.addCategory(Intent.CATEGORY_DEFAULT);
localIntent.setData(Uri.parse("package:" + getPackageName()));
} else {
//4.4以下沒有從app跳轉到應用通知設定頁面的Action,可考慮跳轉到應用詳情頁面,
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);
}
這是檢測通知訊息權限的方法:isNotificationEnabled
/**
* 獲取通知權限
*/
@TargetApi(Build.VERSION_CODES.KITKAT)
private boolean isNotificationEnabled() {
String CHECK_OP_NO_THROW = "checkOpNoThrow";
String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";
AppOpsManager mAppOps = (AppOpsManager) getSystemService(APP_OPS_SERVICE);
ApplicationInfo appInfo = getApplicationInfo();
String pkg = getApplicationContext().getPackageName();
int uid = appInfo.uid;
Class appOpsClass = null;
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 = (Integer) opPostNotificationValue.get(Integer.class);
return ((Integer) checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg) == AppOpsManager.MODE_ALLOWED);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
3、創建管理類物件
private NotifiSmallManager smallManager;
smallManager = new NotifiSmallManager(this);
4、呼叫添加普通通知欄訊息的方法:
//注意,最后一個引數是Intent,就是當通知欄訊息被點擊后會跳轉到這個intent,如果不想讓跳轉視窗就傳入new Intent()即可
smallManager.createBasicNotify(1, R.mipmap.ic_launcher, "通知標題", "通知內容",new Intent(MainActivity.this,MainActivity.class));
5、呼叫添加大圖通知欄訊息的方法:
//這里是先獲取一張大圖,用于通知欄展示用的
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.banner);
//這里添加大圖通知欄訊息
smallManager.createBigPicNotify(2, R.mipmap.ic_launcher, "大圖通知標題", "大圖通知內容", bitmap,new Intent(MainActivity.this,MainActivity.class));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/287413.html
標籤:其他
