2011-03-16 15 views
1

起動時にAndroid 2.1 Galaxy S Phoneを起動しようとしていて、クラッシュしました。Androidの起動時にBroadcastReceiverのクラッシュからブートする

私がcontext.startActivity(i)をコメントアウトすると、ここに私の受信機があります。そうでなければ、私はパワーアップ時にクラッシュしません。同じACTIONを使用している別のアクティビティからのstartActivityはクラッシュしません。これはちょうどブートにあるようです。

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

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)です。私は詳細を提供するために私の三星ギャラクシーCaptivateでクラッシュログを見ることができません。 – Androider

答えて

2

まず最初にログを調べてください。この場合、元のコードと固定コードの両方の問題は、ログのクラッシュでかなり明確に説明されます。

+0

それは本当です。私はサムスンの虜になっている。コアダンプが発生すると、ファイルは/ data/logsに保存されますが、これはEclipseのアンドロイドファイルビューアからは表示されません。私は空/データのみを参照してください。sdとtmpはファイルを持っているようです。 – Androider

+0

ダンプファイルがありますが、コアダンプは表示されませんでした。 – Androider

+0

@Androider:この場合のLogはLogCatです。 Eclipseで 'adb logcat'、DDMS、またはDDMSパースペクティブを使ってLogCatを調べ、エラーを見つけるためにスタックトレースを見てください。 – CommonsWare

2

あなたの活動がマニフェストにDISPLAY_FIRSTPAGEインテントを処理するように指定しない限り、あなたは明確にwouldn、(起動するどのようなことを言っていませんそれはいい考えです)。

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

これを試してみて、私はまだクラッシュを見ています。 – Androider

+0

BTWエミュレータでも試してみると、シャットダウンに時間がかかり、パワーアップをテストできます。アプリを起動しないでエミュレータを起動する方法はありますか?シャットダウン/スタートアップが待ち受けるのは永遠に – Androider

+0

私の経験では、シャットダウンはエミュレータでは動作しません。ウィンドウを閉じるだけです。起動に関しては 'エミュレータ'を実行するだけです。または、GUIを好む場合は、Android SDKとAVDマネージャを使用し、AVDを選択してLaunch(または類似のもの)をクリックします。 – Felix

関連する問題