8

他のアプリケーションによって通知バーに表示された通知を読み込み/アクセス/ログします。通知が通知されたときに通知を受け取る方法

私はIntentsPendingIntentsをたくさん探しましたが、解決策を得ることができませんでした。

通知が送信されたときに私のアプリケーションに通知する必要がありますか?

また、アンドロイドシステムはユーザレベルのアプリケーションによる通知を読むために何かを提供していますか?

答えて

5

最後に答えが得られました。 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> 

コーディングをお楽しみください!!!。 :)

+1

このコードは、通知に関連するイベントを捕捉するためのものです。 'info.eventTypes ='を変更すると、さまざまな種類のイベントを捕捉できます。 – Kishore

+0

サービス接続メソッドでログインしようとしましたが、失敗しました。アクセス許可が必要ですか? – Calvin

+0

@Calvin:ユーザー補助機能を手動で設定から解除する必要があります(設定 - >アクセシビリティ) – Kushal

0

通知にアクセスするためのAPIはありません。少なくともそれはセキュリティ上の穴になるだろう。あなたができることは、(SMSのような)通知を引き起こすいくつかのイベントを捕まえることだけです。

0

Notificationは、Intentを送信することによって発生します。

Intent intent = new Intent(this, NotificationReceiver.class); 

NotificationReceiverIntentをキャッチし、Notificationをポップアップ表示されます。

あなたのアプリケーションのいずれかに同じIntentをキャッチし、BroadCastReceiverを使用して、あなたが望むIntentのフィルタを使用することは、完全に可能です。

+0

"通知バーの状態の変更"または "通知の発生"の意図はありません。 – Kishore

+0

それは本当ですが、通知はインテントを使用して起動されます。また、インテントはBroadCastReceiverで捕捉できます。アフリカは、どのような種類のNoficationにアクセスしたいかによって異なります。 – DroidBender

+0

実際には、すべての通知をログに記録します。だから私はすべての通知をキャッチする一般的な方法を探しています。 – Kishore