Android广播接收器打开一个意图
我有一个android应用程序,需要定期生成通知,当我们点击通知时,通知中显示的消息将显示在原始应用程序活动的文本视图中 为此,我创建了一个AlarmReceiver.java类Android广播接收器打开一个意图,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,我有一个android应用程序,需要定期生成通知,当我们点击通知时,通知中显示的消息将显示在原始应用程序活动的文本视图中 为此,我创建了一个AlarmReceiver.java类 public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("ME", "Noti
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Log.d("ME", "Notification started");
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_noticon)
.setContentTitle("Notification")
.setContentText("You have to open app to see this message in detail");
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, mBuilder.build());
Intent resultIntent = new Intent("com.app.AlarmBack");
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(AlarmBack.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_ONE_SHOT);
mBuilder.setContentIntent(resultPendingIntent);
}
我还为名为AlarmBack.java的意图创建了类
public class AlarmBack extends MainActivity {
TextView tv_alert_back_display;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getLayoutInflater().inflate(R.layout.alert_back, frameLayout);
mDrawerList.setItemChecked(position, true);
setTitle(mTitle);
tv_alert_back_display = (TextView) findViewById(R.id.tv_alert_back_display);
tv_alert_back_display.setText("This is the message that needs your attension");
}}
但问题是这不起作用。它并没有打开想要打开的意图。那么,有人能帮我解决这个问题吗。您需要在设置生成器的意图之后而不是之前调用notify()。否则,由builder.build()创建的通知在添加到通知管理器时将不会有这些意图。您需要为
NotificationBuilder设置ContentIntent
:
NotificationCompat.Builder builder = new NotificationCompat.Builder(
context).setSmallIcon(R.drawable.app_icon)
.setContentTitle("Your Title").setContentText("");
Intent intent = new Intent(context, YourMainActivity.class);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 100,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
在AlarmReceiver OnReceive方法中调用此函数
int taskID = 1;
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(taskID, getNotification(context, "title", "content"));
并将此方法添加到报警接收器中
private Notification getNotification(Context context, String title, String content) {
Notification.Builder builder = new Notification.Builder(context);
builder.setContentTitle(title);
builder.setContentText(content);
builder.setSmallIcon(R.drawable.icon_64);
builder.setAutoCancel(true);
builder.setDefaults(android.app.Notification.DEFAULT_ALL);
Intent resultIntent = new Intent(context, SplashActivity.class); //Activity that you want to open
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(SplashActivity.class); // Activity that you want to open
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(resultPendingIntent);
return builder.getNotification();
}
您想在单击通知时打开您的活动,还是想更改通知的标题和内容?@ZubairAkber我想在单击通知时打开活动您是否尝试过我的答案它对我有效希望它对您同样有效well@ZubairAkber我对我在报告中提到的解决方案有疑问请在回答下面的评论部分进行澄清。那么请回答的第一部分,我到底应该叫它在哪里,我很抱歉。它(代码的第一部分)在AlarmReceiver类OnReceive void方法中吗?第一部分在OnReceive mmethod中