gpt4 book ai didi

android - 按下 .addAction() 时 BroadcastReceiver 未收到

转载 作者:行者123 更新时间:2023-11-29 20:05:59 27 4
gpt4 key购买 nike

我试图在不打开应用程序的情况下关闭来自 .addAction() 的通知。问题是按下按钮时没有任何反应,onReceive() 方法不会触发。

这是 MainActivity 上的代码:

 Intent notificationIntent = new Intent(mContext, MainActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
notificationIntent.putExtra("id", SOMENUMBER);
PendingIntent pIntent = PendingIntent.getBroadcast(mContext, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder notification = new NotificationCompat.Builder(mContext);
notification.setContentTitle("");
notification.setContentText(t);
notification.setSmallIcon(R.mipmap.ic_launcher);
notification.setOngoing(true);
notification.addAction(R.mipmap.ic_launcher, "Dismiss", pIntent);

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(SOMENUMBER, notification.build());

在其他类(class)中我有接收者:

public class Notification extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(intent.getIntExtra("id", 0));
}
}

AndroidManifest.xml 文件中的接收者:

<receiver android:name=".MainActivity">
<intent-filter>
<action android:name="io.github.seik.Notification" />
</intent-filter>
</receiver>

最佳答案

您的命名约定令人困惑。 Android 已经有一个名为 Notification 的类, 所以你可能不应该调用你的接收器 Notification :-(

如果MainActivity延伸Activity那么你需要有一个 list 条目,看起来像这样:

<activity android:name=".MainActivity"/>

为您的BroadcastReceiver ,您需要这样的 list 条目:

<receiver android:name=".Notification"
android:exported="true"/>

由于您使用的是明确的 Intent启动您的 BroadcastReceiver ,您无需提供 <intent-filter>为了它。自 BroadcastReceiver将由 NotificationManager 启动, 你需要确保它是 exported .

然后您需要创建 PendingIntent以便它实际启动您的 BroadcastReceiver ,所以改变这个:

Intent notificationIntent = new Intent(mContext, MainActivity.class);

为此:

Intent notificationIntent = new Intent(mContext, Notification.class);

关于android - 按下 .addAction() 时 BroadcastReceiver 未收到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35669469/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com