待定意图无效

时间:2014-04-25 06:53:35

标签: android android-pendingintent

我在活动中使用待处理的意图。

Intent intent = new Intent(this, MyActivity.class);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 34433,
            intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP,
            System.currentTimeMillis() + (5000), pendingIntent);

这里我将从一个活动(MainActivity)转到另一个活动(MyActivity)。 但它没有用。

如果我尝试用简单的Intent来做它然后它工作正常。

2 个答案:

答案 0 :(得分:3)

您已请求PendingIntent开始BroadcastReceiver,但您正尝试启动Activity。这不起作用。

如果你想开始Activity,而不是这个:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 34433,
        intent, PendingIntent.FLAG_UPDATE_CURRENT);

这样做:

PendingIntent pendingIntent = PendingIntent.getActivity(this, 34433,
        intent, PendingIntent.FLAG_UPDATE_CURRENT);

答案 1 :(得分:0)

您还可以使用带PendingIntent的广播接收器来开始另一项活动。

创建另一个类,例如receiver作为BroadcastReceiver的子类

public class receiver extends BroadcastReceiver {


     @Override
     public void onReceive(Context context, Intent intent) 
     {   
        // code to start another activity
         Intent intent = new Intent(context.getApplicationContext(), MyActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         context.startActivity(intent);
     }
  }

并在Android menifest文件中将MyActivity定义为接收器 并在主要活动中更改此代码 MyActivity.class到receiver.class

Intent intent = new Intent(this, receiver.class);

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 34433,
        intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,
        System.currentTimeMillis() + (5000), pendingIntent);