如何在Android设备启动完成后,在BroadcastReceiver上启动Activity

7
我使用下面的代码让我的应用程序在启动完成10秒后自动启动:
public class BootActivity extends BroadcastReceiver {
    static final String ACTION = "android.intent.action.BOOT_COMPLETED";   

    public void onReceive(Context context, Intent intent) {   
        if(intent.getAction().equals(ACTION)) {
            context.startService(new Intent(context,    
                    BootActivity.class));
            try {
                Thread.sleep(10000);
                Intent newAct = new Intent();
                newAct.setClass(BootActivity.this, NewActivity.class);
                startActivity( newAct );
            }
            catch(Exception e) {
                e.printStackTrace();
            }
        }   
    }   
}  

但是这里不能使用setClassstartActivity方法。
我该如何修改以启动活动?


“但是setClass和startActivity不能在这里使用。”的意思是什么? - Pankaj Kumar
找不到这两个方法。 - brian
方法 startActivity(Intent) 在类型 BootActivity 中未定义。 - brian
1
尝试使用 context.startActivity(newAct); - PX Developer
使用context.startActivity启动活动并确保上下文的最终状态。 - Pankaj Kumar
2个回答

8
希望这能帮到你...
创建一个名为AutoStart.class的类。
public class AutoStart extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
         if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
                Intent i = new Intent(context, SochActivity.class);
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(i);
            }
    }

清单文件:

在清单标签下:

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

在应用程序标签下:

        <receiver
            android:name=".AutoStart"
            android:enabled="true"
            android:exported="true" >
            <intent-filter android:priority="500" >
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

1
我是否还需要将此代码添加到清单文件中:<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>? - Tom Lenc
1
是的。您必须添加<uses-permission/>。 - mark922

4
请在清单文件中尝试以下内容:
<receiver android:name=".BootActivity">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

请确保还包括已完成的启动权限。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接