我找到了这个很棒的教程:http://gmariotti.blogspot.it/search?q=NotificationListenerService我尝试下载源代码并将其用于我的应用程序以阅读whatsapp通知但我看不到任何内容..它看起来很简单但不起作用为了我。 NotificationListenerService:
public class SimpleKitkatNotificationListener extends NotificationListenerService {
@Override
public void onCreate() {
super.onCreate();
//android.os.Debug.waitForDebugger();
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
Notification mNotification=sbn.getNotification();
if (mNotification!=null){
Bundle extras = mNotification.extras;
Intent intent = new Intent(MainActivity.INTENT_ACTION_NOTIFICATION);
intent.putExtras(mNotification.extras);
sendBroadcast(intent);
Notification.Action[] mActions=mNotification.actions;
if (mActions!=null){
for (Notification.Action mAction:mActions){
int icon=mAction.icon;
CharSequence actionTitle=mAction.title;
PendingIntent pendingIntent=mAction.actionIntent;
}
}
}
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
}
}
和活动:
public class MainActivity extends Activity {
protected MyReceiver mReceiver = new MyReceiver();
public static String INTENT_ACTION_NOTIFICATION = "it.gmariotti.notification";
protected TextView title;
protected TextView text;
protected TextView subtext;
protected ImageView largeIcon;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Retrieve ui elements
title = (TextView) findViewById(R.id.nt_title);
text = (TextView) findViewById(R.id.nt_text);
subtext = (TextView) findViewById(R.id.nt_subtext);
largeIcon = (ImageView) findViewById(R.id.nt_largeicon);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_autorize:
Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onResume() {
super.onResume();
if (mReceiver == null) mReceiver = new MyReceiver();
registerReceiver(mReceiver, new IntentFilter(INTENT_ACTION_NOTIFICATION));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(mReceiver);
}
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
Bundle extras = intent.getExtras();
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);
title.setText(notificationTitle);
text.setText(notificationText);
subtext.setText(notificationSubText);
if (notificationLargeIcon != null) {
largeIcon.setImageBitmap(notificationLargeIcon);
}
}
}
}
}
是的,我已经自动化了应用程序以阅读通知。我用CM11获得了Android 4.4.2 ..我不知道这是不是问题。