2012-02-13 35 views
1

デバイスの起動が完了したら、アプリケーションを実行したいと思います。このため 私は、インターネットでいくつかの有用なコードを発見した:Androidの自動起動アクティビティ(アプリが2回起動)

public class MyBootCompleteReceiver extends BroadcastReceiver 
{ 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     if(intent.getAction() != null && intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) 
     { 
      Intent pushIntent = new Intent(context, MainActivity.class); 
      pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

      context.startActivity(pushIntent); 
     } 
    } 
} 

とマニフェストエントリ:

<receiver android:name="MyBootCompleteReceiver" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      <category android:name="android.intent.category.DEFAULT" />   
     </intent-filter>  
    </receiver> 

私は自分のデバイスを起動する場合はこれでアプリケーションが二回起動しているようです。 それから、 "NEW_TASK"フラグを "REORDER_TO_FRONT"と置き換えようとしましたが(インターネットでもこれを読んでいます)、そうすれば起動時にアプリケーションがクラッシュします。 また、すべてのフラグを削除すると、それもクラッシュします。

希望すると助かります!

+0

なぜクラッシュするのですか?エラーログ? –

+0

いいえ、残念ながら(私の日食はブート後にログに記録されないので)。 画面のロックを解除した後、(アプリケーションが予期せずクラッシュして強制的に閉じる)典型的な黒いダイアログが表示されます。 – Chris

答えて

1

だから...

長い長いテストの後、私はこの問題は私の物理的なタブレット(ASUS EEEパッドtransfortemアンドロイドバージョン3.2でなければならないことが分かりました。 1)。

私はエミュレータ(アンドロイドバージョン3.2)で試したので、私が投稿したソースコード(このスレッドの最上位にあります)はかなりうまくいきました。 アプリの2回の起動はなく、エラーは発生しません。 「pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);」を削除しても、それは動作します。

私は更新を待つ必要があるようです(おそらくアンドロイド4.0で)。

私はこれが同じ問題を抱えている誰かに役立つことを願っています。

+0

あなたの 'BroadcastReceiver'に高い優先度を使うなら、それを削除してください。私はそれをしたし、それはまだシステムが起動していないようだ...完全に起動し、私のアプリが起動し、その後クラッシュした。私はそれが2回呼び出されたかどうかは分かりません。しかし、高い優先度を削除した後、アプリは正常に動作しました。 –

+0

ごめんなさい、あなたのXMLが見えませんでした。しかし、私はあなたと同じように見える問題を抱えています。私がそれを解決するためにしたのは、コメントの上です。 –

+0

どのようにして優先度を削除できますか?そして、どこ? – Chris

0

マニフェストファイルのアクティビティで、ブート完了インテントフィルタを使用します。

<activity ....> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     <category android:name="android.intent.category.DEFAULT" />   
    </intent-filter>  
</activity> 

私はそれが役に立てば幸い...

+0

ソースコードはどのように見えますか? – Chris

関連する問題