onReceive 从未在 BroadcastReceiver 的子类中调用
onReceive never called in subclass of BroadcastReceiver
我是 Android 的新手,我想创建带有取消按钮的通知。这是代码:
public class MainActivity extends ActionBarActivity implements OnItemClickListener
{
...stuff here...
void myMethod()
{
Intent buttonIntent = new Intent(this, NotificationButtonReceiver.class);
buttonIntent.putExtra("notificationId", 8);
PendingIntent btPendingIntent = PendingIntent.getBroadcast(this, 0, buttonIntent,0);
Notification.Builder builder = new Notification.Builder(this)
.setStyle(new Notification.BigTextStyle().bigText("lorem ipsum dollom"))
.setAutoCancel(false)
.setContentTitle("BigText")
.setContentText("Hello from BigText")
.setSmallIcon(R.drawable.like)
.addAction(R.drawable.abc_btn_radio_material, "Dismiss", btPendingIntent);
Notification notif = builder.build();
NotificationManager manager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);
manager.notify(8, notif);
}
...stuff here...
}
public class NotificationButtonReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
int notificationId = intent.getIntExtra("notificationId", 0);
Toast.makeText(context.getApplicationContext(), "received",
Toast.LENGTH_SHORT).show();
NotificationManager manager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
manager.cancel(notificationId);
}
}
名为 myMethod
的方法已成功调用,但从未调用方法 onReceive
尽管我单击了按钮 dismiss
。
有什么建议吗?
当您使用 BroadCastReceiver 时,您需要注册(提到@Harsh)。
这是您需要做的
在清单的 application
标签中添加以下代码
<receiver android:name="your.package.name.NotificationButtonReceiver">
<intent-filter>
<action android:name="notify_dismiss" />
</intent-filter>
</receiver>
PendingIntent
东西
Intent buttonIntent = new Intent("notify_dismiss");
buttonIntent.putExtra("notificationId", 8);
PendingIntent btPendingIntent = PendingIntent.getBroadcast(this, 0, buttonIntent,0);
我是 Android 的新手,我想创建带有取消按钮的通知。这是代码:
public class MainActivity extends ActionBarActivity implements OnItemClickListener
{
...stuff here...
void myMethod()
{
Intent buttonIntent = new Intent(this, NotificationButtonReceiver.class);
buttonIntent.putExtra("notificationId", 8);
PendingIntent btPendingIntent = PendingIntent.getBroadcast(this, 0, buttonIntent,0);
Notification.Builder builder = new Notification.Builder(this)
.setStyle(new Notification.BigTextStyle().bigText("lorem ipsum dollom"))
.setAutoCancel(false)
.setContentTitle("BigText")
.setContentText("Hello from BigText")
.setSmallIcon(R.drawable.like)
.addAction(R.drawable.abc_btn_radio_material, "Dismiss", btPendingIntent);
Notification notif = builder.build();
NotificationManager manager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);
manager.notify(8, notif);
}
...stuff here...
}
public class NotificationButtonReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
int notificationId = intent.getIntExtra("notificationId", 0);
Toast.makeText(context.getApplicationContext(), "received",
Toast.LENGTH_SHORT).show();
NotificationManager manager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
manager.cancel(notificationId);
}
}
名为 myMethod
的方法已成功调用,但从未调用方法 onReceive
尽管我单击了按钮 dismiss
。
有什么建议吗?
当您使用 BroadCastReceiver 时,您需要注册(提到@Harsh)。
这是您需要做的
在清单的 application
标签中添加以下代码
<receiver android:name="your.package.name.NotificationButtonReceiver">
<intent-filter>
<action android:name="notify_dismiss" />
</intent-filter>
</receiver>
PendingIntent
东西
Intent buttonIntent = new Intent("notify_dismiss");
buttonIntent.putExtra("notificationId", 8);
PendingIntent btPendingIntent = PendingIntent.getBroadcast(this, 0, buttonIntent,0);