【问题标题】:Android: start an Activity from a BroadcastReceiverAndroid:从广播接收器启动一个活动
【发布时间】:2013-04-12 13:54:22
【问题描述】:

我想从 BroadcastReceiver 开始一个活动。问题是,当我尝试启动它时,我收到一个异常,告诉我添加“FLAG_ACTIVITY_NEW_TASK”标志,因为我的接收器已注册到服务而不是活动中。 因此,我将代码修改为 BroadcastReceiver 类:

public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
    Intent start=new Intent(context,MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(start);
}

但是我的 Activity 没有启动。谁能解释我为什么会出现这种行为?

【问题讨论】:

    标签: android android-activity broadcastreceiver android-broadcast


    【解决方案1】:

    我认为问题出在标志上,它是这样使用的

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    

    但是你使用了addFlags()函数。

    【讨论】:

      【解决方案2】:

      你可以用这个:-

       @Override
      public void onReceive(Context context, Intent intent) {
      
      
         intent.setClass(context, nextgoingactivity);
          intent.putExtra("sipcallid", sipAddress); // your data
       intent.putExtra("sipAddress", sipcallid);  // your data
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startActivity(intent); 
      
      }
      

      并更新您的 AndroidManifesh.xml,

       <receiver android:name=".IncomingCallReceiver" android:label="Call Receiver">
              <intent-filter>
                  <action android:name=".nextgoingactivity"/>
              </intent-filter>
           </receiver>
      

      它应该可以解决您的问题!

      【讨论】:

        【解决方案3】:

        我想这只是一个错字。

        你必须打电话给start.addFlags(),而不是intent.addFlags()

        【讨论】:

        • @user1071138 如果这能解决你的问题,你为什么不接受这个作为答案;)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多