この質問がジェリービーンについて何度も出されたことは知っていますが、それを機能させる方法がわかりません。AccessibilityService を使用して Notification イベントを取得しようとしています。これが私が試したコードです...
public class NotificationService extends AccessibilityService {
Context context;
private boolean isInit;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
Log.d("NotificationService","oncreate of NotificationService");
}
@Override
public void onAccessibilityEvent(AccessibilityEvent sbn) {
Log.d("NotificationService","onAccessibilityEvent");
if (sbn.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
//Do something, eg getting packagename
final String packagename = String.valueOf(sbn.getPackageName());
String pack = String.valueOf(sbn.getPackageName());
/*String ticker = sbn.getNotification().tickerText.toString();
Bundle extras = sbn.getNotification().extras;
String title = extras.getString("android.title");*/
String text = sbn.getContentDescription().toString();
Log.d("NotificationService", "Package = "+pack);
Log.d("NotificationService", "Text = " + text);
/*Intent msgrcv = new Intent("Msg");
msgrcv.putExtra("package", pack);
msgrcv.putExtra("ticker", ticker);
msgrcv.putExtra("title", title);
msgrcv.putExtra("text", text);
LocalBroadcastManager.getInstance(context).sendBroadcast(msgrcv);*/
}
}
@Override
protected void onServiceConnected() {
if (isInit) {
return;
}
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
setServiceInfo(info);
isInit = true;
}
@Override
public void onInterrupt() {
isInit = false;
}
私のマニフェストファイル
<service android:name=".NotificationService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" >
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
<category android:name="android.accessibilityservice.category.FEEDBACK_SPOKEN" />
</intent-filter>
<meta-data android:name="android.accessibilityservice"
android:resource="@xml/accessibilityservice" />
accessibilityservice.xml ファイルは次のようになります
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://Schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeNotificationStateChanged"
android:accessibilityFeedbackType="feedbackAllMask"
android:notificationTimeout="100" />
私を助けてください、私は非常に長い間立ち往生しています。