Android 使用権の使用を通知します。
Android 使用権の使用を通知します。
概要
現在、多くのサードパーティセキュリティAPPはメッセージ管理機能またはメッセージボックス機能を持っています。フィルタリングシステムの中の無駄なメッセージを管理して、メッセージバーをよりさわやかで清潔にします。この機能の実現はAndroidで提供された通知の使用権を使用しています。Android 4.3は、通知使用権NotificationListenerServiceに加入しています。つまり、あなたが開発したAPPがこの権限を持っていると、現在のシステムの通知の変化を傍受できます。Android d4.4の後、通知の詳細情報を得ることができるように拡張されました。NotificationListenerServiceの具体的な使い方を見てみます。
使用
新しいサービスクラスを作り、NotificationListenerServiceを継承し、二つの重要な方法を実現します。
android.service.notifications.NotificationListenerService、そしてシステム設定で使用権リストで見たlabelタグを通知します。
概要
現在、多くのサードパーティセキュリティAPPはメッセージ管理機能またはメッセージボックス機能を持っています。フィルタリングシステムの中の無駄なメッセージを管理して、メッセージバーをよりさわやかで清潔にします。この機能の実現はAndroidで提供された通知の使用権を使用しています。Android 4.3は、通知使用権NotificationListenerServiceに加入しています。つまり、あなたが開発したAPPがこの権限を持っていると、現在のシステムの通知の変化を傍受できます。Android d4.4の後、通知の詳細情報を得ることができるように拡張されました。NotificationListenerServiceの具体的な使い方を見てみます。
使用
新しいサービスクラスを作り、NotificationListenerServiceを継承し、二つの重要な方法を実現します。
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public class NotificationListener extends NotificationListenerService {
privatestatic final String TAG = "NotificationListener";
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
Log.i(TAG,"Notification removed");
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
Log.i(TAG, "Notification posted");
}
}
Android Manifest.xmlは、このサービスの種類を宣言し、BIND_を宣言しなければならない。NOTIFICATION_リマスターSERVICEライセンスと意図フィルタandroid.service.notifications.NotificationListenerService、そしてシステム設定で使用権リストで見たlabelタグを通知します。
<serviceandroid:name=".NotificationListener"
android:label=" "
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<actionandroid:name="android.service.notification.NotificationListenerService"/>
</intent-filter>
</service>
OKです。このように簡単にAPPモニターシステム通知バーの機能を完成できます。次に、NotificationListenerService類を見に来ました。また、いくつかの重要な方法があります。
StatusBarNotification[] sbns = getActiveNotifications(); //
cancelAllNotifications(); //
cancelNotification(String pkg, String tag, int id); //
また、上記の2つの重要な書き換え方法があります。
onNotificationRemoved(StatusBarNotification sbn); //
onNotificationPosted(StatusBarNotification sbn); //
これらの2つの重要なチューニング方法は、それらのパラメータStutsBarNotificationオブジェクトは、現在の変更通知をトリガする詳細情報である。Status BarNotificationの使用を見に来ました。
sbn.getId(); // id
sbn.getNotification(); //
sbn.getPackageName(); //
sbn.getPostTime(); //
sbn.getTag(); // Tag, null
sbn.isClearable(); // , FLAG_ONGOING_EVENT、FLAG_NO_CLEAR
sbn.isOngoing(); // , FLAG_ONGOING_EVENT
ここで、get Notification()が戻ってきた通知オブジェクトは、通知された他の関連情報を詳細に見ることができる。
Notification notification = sbn.getNotification();
notification.contentView; // RemoteViews
notification.contentIntent; // PendingIntent
notification.actions; //
// Android4.4
if (Build.VERSION.SDK_INT >Build.VERSION_CODES.JELLY_BEAN_MR2) {
Bundle extras = notification.extras;
String notificationTitle = extras.getString(Notification.EXTRA_TITLE);
int notificationIcon = extras.getInt(Notification.EXTRA_SMALL_ICON);
Bitmap notificationLargeIcon = ((Bitmap)extras.getParcelable(Notification.EXTRA_LARGE_ICON));
CharSequence notificationText = extras.getCharSequence(Notification.EXTRA_TEXT);
CharSequence notificationSubText = extras.getCharSequence(Notification.EXTRA_SUB_TEXT);
}
システム設定にジャンプした通知の使用権ページ
private boolean gotoNotificationAccessSetting(Contextcontext) {
try {
Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
return true;
} catch(ActivityNotFoundException e) {
try {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName cn = new ComponentName("com.android.settings","com.android.settings.Settings$NotificationAccessSettingsActivity");
intent.setComponent(cn);
intent.putExtra(":settings:show_fragment", "NotificationAccessSettings");
context.startActivity(intent);
return true;
} catch(Exception ex) {
ex.printStackTrace();
}
return false;
}
}
通知使用権があるかどうかを判断する。
private boolean notificationListenerEnable() {
boolean enable = false;
String packageName = getPackageName();
String flat= Settings.Secure.getString(getContentResolver(),"enabled_notification_listeners");
if (flat != null) {
enable= flat.contains(packageName);
}
return enable;
}
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。