2011-03-16 93 views
1

我試圖啓動我的Android 2.1 Galaxy S電話啓動時,它崩潰。安裝啓動應用程序從廣播接收器啓動崩潰

這裏是我的接收器,如果我註釋掉context.startActivity(i)我不會崩潰,否則我會在powerup上看到它。來自使用相同ACTION的另一活動的startActivity不會導致崩潰。這似乎只是在Boot上。

public class MyBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent i = new Intent(); 
     i.setAction("DISPLAY_FIRSTPAGE"); 
     context.startActivity(i); 
    } 
} 

我設置在清單中像這樣的接收器:

<receiver android:name=".MyBroadcastReceiver"> 
      android:enabled="true" android:exported="false" 
      android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
</receiver> 
+0

失敗的地方是startActivity(i)。我無法在Samsung Galaxy Captivate上看到崩潰日誌以提供更多信息。 – Androider 2011-03-16 20:42:28

回答

2

請先查看一下日誌。在這種情況下,問題(包括原始代碼和固定代碼)將在日誌中的崩潰中清楚地解釋。

+0

這是真的。我在三星迷住了。發生核心轉儲時,它表示該文件存儲在/ data/logs中,但是這在eclipse android文件查看器中不可見。我看到空/數據只有SD和TMP似乎有文件 – Androider 2011-03-16 22:56:19

+0

我有一個轉儲文件,但我沒有看到核心轉儲 – Androider 2011-03-16 22:56:39

+0

@Androider:在這種情況下,「日誌」是LogCat。在Eclipse中使用'adb logcat',DDMS或DDMS透視圖來檢查LogCat並查看堆棧跟蹤以查找錯誤。 – CommonsWare 2011-03-16 23:13:08

2

你顯然不告訴它推出什麼(除非你使用了一個活動處理在清單DISPLAY_FIRSTPAGE意圖,這止跌這不是一個好主意)。嘗試一下:

Intent i = new Intent(context, MyActivity.class); 
context.startActivity(i); 
+0

嘗試了這一點,我仍然看到了這次事故。 – Androider 2011-03-16 21:10:32

+0

順便也嘗試模擬器,並關機花費時間來測試通電。有沒有什麼辦法可以啓動模擬器,無需啓動應用程序。等待關機/啓動需要永久 – Androider 2011-03-16 21:11:35

+0

根據我的經驗,關機在模擬器上不起作用。關上窗戶。至於啓動它只需運行'emulator'。或者,如果您更喜歡GUI,請使用Android SDK和AVD管理器,選擇一個AVD並單擊啓動(或類似)。 – Felix 2011-03-16 22:04:23