【问题标题】:How to launch activity on BroadcastReceiver when boot complete on Android在 Android 上启动完成时如何在 BroadcastReceiver 上启动活动
【发布时间】:2020-10-10 18:08:14
【问题描述】:

我使用下面的代码让我的应用程序可以在启动完成 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不能在这里使用。
如何修改以将其设置为启动活动?

【问题讨论】:

  • But the setClass and startActivity cannot use here. 是什么意思?
  • 找不到这两种方法。
  • 方法 startActivity(Intent) 未定义 BootActivity 类型
  • 试试 context.startActivity(newAct);
  • 确定上下文并使用 context.startActivity

标签: android broadcastreceiver


【解决方案1】:

希望对您有所帮助...

创建名为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>

【讨论】:

  • 我是否还必须在清单中添加:&lt;uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/&gt;
  • 是的。您必须添加
【解决方案2】:

在清单文件中试试这个,

<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"/>

【讨论】:

    猜你喜欢
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多