Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android广播接收器打开一个意图_Android_Android Intent_Broadcastreceiver - Fatal编程技术网

Android广播接收器打开一个意图

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

我有一个android应用程序,需要定期生成通知,当我们点击通知时,通知中显示的消息将显示在原始应用程序活动的文本视图中

为此,我创建了一个AlarmReceiver.java类

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中