在Android中启动电话启动活动

时间:2012-06-01 16:15:50

标签: android android-activity startup boot

我想在手机启动时自动启动我的应用程序。 我在清单文件中声明了一个BroadcastReceiver。

<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);
    }
}

}

但是,当我打开手机时,应用程序无法启动。谁能告诉我这里缺少什么?

3 个答案:

答案 0 :(得分: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);
    }

答案 1 :(得分:2)

如果您使用的是Android 3.1或更高版本:

确保您至少手动启动了一次应用程序(例如,从应用程序抽屉中打开它)。否则,系统会将您的应用标记为停止:

  

应用程序在首次安装但尚未启动时处于停止状态

停止的应用不会收到任何广播意图,包括BOOT_COMPLETED

有关详细信息,请参阅Android 3.1. Platform - Launch controls on stopped applications

答案 2 :(得分:0)

最好的答案是显示一个通知,并要求用户从该通知中启动应用程序,并在通知中对该活动使用未决的意图。