2010-02-19 125 views
1

我有该广播接收机注册Android:为什么BroadcastReceiver崩溃?

public class NotifyAlarmBroadcast extends BroadcastReceiver{ 
    public Context context; 
    public static final String NOTI = "android.intent.action.MAIN"; 
// actually i want NOTI = "com.sumit.timekeeper.NotifyAlarm" 
// this too is not working 
// help me here please 

@Override 
public void onReceive(Context _context, Intent intent) { 
    context = _context; 
    Uri data = intent.getData(); 
    String reason = intent.getStringExtra("alarm_reason"); 
    Intent intentalarm = new Intent(NOTI, data); 

    intentalarm.putExtra("reason", reason); 
    context.startActivity(intentalarm); 
} 

}

和清单

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".TimeKeeperStartActivity" 
     android:screenOrientation="portrait" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".NotifyAlarm" 
     android:screenOrientation="portrait" android:theme="@android:style/Theme.Dialog"> 
     <intent-filter> 
      <action android:name="com.sumit.timekeeper.NotifyAlarm"> 
      </action> 
     </intent-filter> 
    </activity> 

    <receiver android:name=".NotifyAlarmBroadcast"> 
     <intent-filter> 
      <action android:name="com.sumit.timekeeper.NotifyAlarmBroadcast" /> 
     </intent-filter> 
    </receiver> 
</application> 

但当线到达context.startActivity(intentalarm); 应用程序崩溃

可能是我们将第一个参数传递给Intent的地方,我不清楚 请帮助我。

+0

您可能有更多关于LogCat崩溃的信息(DDMS - > LogCat标签) – ccheneson 2010-02-19 09:40:32

+0

嗨ccheneson,感谢您的回应。 LogCat在context.startActivity(intentalarm)处显示崩溃; 。此外,我也尝试了AlerDialog,当命中alertDialogObj.show()崩溃...正常意图与NotifyAlarm.class param也崩溃时,点击context.startActivity(intentObj); ?我处于非常天真的阶段,我甚至无法理解操作系统级别发生了什么。 – 2010-02-19 09:46:01

+0

工作正常的唯一的东西是Toast,它在到达toastObj.show()时不会崩溃() – 2010-02-19 09:47:21

回答

2

尝试在您的意图中添加FLAG_ACTIVITY_NEW_TASK标志。

intentalarm.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
+0

这对我也不起作用。我想我不了解BroadCasting的真实行为。我想在找到一些不错的教程后学习它。如果您知道有任何博客在Android中解释BroadCasting,请给我一个链接。再次感谢。 – 2010-02-26 14:23:21