他のアプリケーションによって通知バーに表示された通知を読み込み/アクセス/ログします。通知が通知されたときに通知を受け取る方法
私はIntents
とPendingIntents
をたくさん探しましたが、解決策を得ることができませんでした。
通知が送信されたときに私のアプリケーションに通知する必要がありますか?
また、アンドロイドシステムはユーザレベルのアプリケーションによる通知を読むために何かを提供していますか?
他のアプリケーションによって通知バーに表示された通知を読み込み/アクセス/ログします。通知が通知されたときに通知を受け取る方法
私はIntents
とPendingIntents
をたくさん探しましたが、解決策を得ることができませんでした。
通知が送信されたときに私のアプリケーションに通知する必要がありますか?
また、アンドロイドシステムはユーザレベルのアプリケーションによる通知を読むために何かを提供していますか?
最後に答えが得られました。 AccessibilityService
public class NotificationService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
// TODO Auto-generated method stub.
//Code when the event is caught
}
@Override
public void onInterrupt() {
// TODO Auto-generated method stub.
}
@Override
protected void onServiceConnected() {
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.feedbackType = 1;
info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
info.notificationTimeout = 100;
setServiceInfo(info);
}
}
そして、私のマニフェストを使用すると、次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.test.notify"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<service android:name=".NotificationService" android:enabled="true">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.accessibilityservice.AccessibilityService"/>
</intent-filter>
</service>
</application>
</manifest>
コーディングをお楽しみください!!!。 :)
通知にアクセスするためのAPIはありません。少なくともそれはセキュリティ上の穴になるだろう。あなたができることは、(SMSのような)通知を引き起こすいくつかのイベントを捕まえることだけです。
Notification
は、Intent
を送信することによって発生します。
Intent intent = new Intent(this, NotificationReceiver.class);
NotificationReceiver
はIntent
をキャッチし、Notification
をポップアップ表示されます。
あなたのアプリケーションのいずれかに同じIntent
をキャッチし、BroadCastReceiverを使用して、あなたが望むIntent
のフィルタを使用することは、完全に可能です。
"通知バーの状態の変更"または "通知の発生"の意図はありません。 – Kishore
それは本当ですが、通知はインテントを使用して起動されます。また、インテントはBroadCastReceiverで捕捉できます。アフリカは、どのような種類のNoficationにアクセスしたいかによって異なります。 – DroidBender
実際には、すべての通知をログに記録します。だから私はすべての通知をキャッチする一般的な方法を探しています。 – Kishore
はそれが可能だ、API 18(アンドロイド4.3)以降: http://developer.android.com/reference/android/service/notification/NotificationListenerService.html
使用することは非常に簡単ですが、ユーザーが手動でアプリに許可を与える必要があります。
このコードは、通知に関連するイベントを捕捉するためのものです。 'info.eventTypes ='を変更すると、さまざまな種類のイベントを捕捉できます。 – Kishore
サービス接続メソッドでログインしようとしましたが、失敗しました。アクセス許可が必要ですか? – Calvin
@Calvin:ユーザー補助機能を手動で設定から解除する必要があります(設定 - >アクセシビリティ) – Kushal