2012-06-01 89 views
2

我想在手機啓動時自動啓動我的應用程序。 我在清單文件中聲明瞭BroadcastReceiver。在手機上啓動一個活動在Android中啓動

<receiver android:name=".Autostart"> 
<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

我爲接收器的Java文件。

Autostart.java

public class Autostart extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) { 

    Intent pushIntent = new Intent(context, MushTouchActivity.class); 
    pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(pushIntent); 
    } 
} 

}

但是,當我轉我的手機上的應用程序不啓動。誰能告訴我我在這裏失蹤了什麼?

回答

4

試試你的if語句是這樣的:

if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){ 


     Intent i = new Intent(context, MushTouchActivity.class); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

     context.startActivity(i); 
    } 
+0

沒有。什麼都沒發生。 – Swayam

+0

這確實有效。如果你想在啓動時開始活動,你需要添加這個標誌。謝謝。 – Stan

+0

這不起作用.. – Noman

2

如果你是在Android 3.1或更高版本:

確保你至少有一次手動啓動您的應用程序(例如,通過從打開它應用程序抽屜)。否則,你的應用程序被標記由系統停止:

應用是,當他們第一次安裝停止狀態,但尚未推出

停止的應用程序將不會收到任何廣播意圖,包括BOOT_COMPLETED

請參閱Android 3.1. Platform - Launch controls on stopped applications瞭解更多信息。

+0

感謝您的回答,但我爲2.3.3設計,我也手動啓動我的應用程序一次。那麼只有我重新啓動。 – Swayam

+0

不是一個真正的答案 –

+0

@CodeDroid鑑於問題中的細節,這當然是一種可能性。既然你沒有提供進一步的信息:我想我低估了你的某個問題或某個東西,你現在只是瘋了嗎?編輯:可能是因爲我[近距離投票這一個](http://stackoverflow.com/questions/10923317/google-tv-and-html5)昨天。 – 2012-06-09 00:52:24