如何在启动时启动/启动应用程序 Android

Posted

技术标签:

【中文标题】如何在启动时启动/启动应用程序 Android【英文标题】:How to start/ launch application at boot time Android 【发布时间】:2012-05-12 19:10:09 【问题描述】:

我想在我的平板电脑启动时启动我的应用,以便我的应用的主要活动是用户在启动平板电脑时看到的第一件事。 我已阅读有关 LauncherActivity 的信息,但我不明白如何使用它。 任何人都可以为此提供建议、链接或教程吗? LauncherActivity 是最好的方法还是有替代方法?

【问题讨论】:

我正在寻找类似的功能,如果你成功了,请与我分享代码。 【参考方案1】:

这些代码行可能对你有帮助...

第一步:在androidManifest.xml中设置权限

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

第 2 步:在接收器中添加此意图过滤器

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

第 3 步:现在您可以从 Receiver 类的 onReceive 方法启动应用程序的第一个活动

public class BootReceiver extends BroadcastReceiver 

   @Override
   public void onReceive(Context context, Intent intent) 
       Intent myIntent = new Intent(context, MainActivity.class);
       myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       context.startActivity(myIntent);
   


【讨论】:

谢谢 vishesh,更重要的是,我的主要活动可以扩展 LauncherActivity 或只是 Activity? 您可以使用 Receiver 代替,这样可以正常工作...检查新更新的代码行.. 是的,这将是您的主要活动。您的应用程序将从那里开始。 如果我的帖子有用且清晰,请给我评分!!所以星期一我可以尝试这个解决方案,然后我接受一个回答;) 更改您的标题,例如“如何在启动时启动/启动应用程序”...:-)【参考方案2】:

如果您想在平板电脑启动时启动应用程序,您需要监听 BOOT_COMPLETED 操作并对其做出反应。 BOOT_COMPLETED 是一个广播动作,在系统完成启动后广播一次。您可以通过创建 BroadcastReceiver 来监听此操作,然后当它收到带有 BOOT_COMPLETED 操作的意图时启动您的启动 Activity。

将此权限添加到您的清单中:

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

在您的项目中创建自定义广播接收器:

public class MyBroadCastReceiver extends BroadcastReceiver 

    @Override
    public void onReceive(Context context, Intent intent) 

        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
            Intent i = new Intent(context, MyActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        
    
 

然后通过将 BroadCastReceiver 添加到 Manifest 来修改您的清单文件:

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

【讨论】:

试过了,不起作用,在显示正常启动屏幕后,我的意图在大约 2 秒后被调用。【参考方案3】:

@vishesh chandra 的回答是正确的。但在某些设备上不起作用,因为应用程序默认安装在外部存储上。请确保您指定

android:installLocation="internalOnly"

否则,如果应用程序安装在 SD 卡中,您将不会收到任何启动完成操作。将此添加到 manifest.xml 文件中的应用程序标记中,它将起作用。

用法:

<application
        android:name=".Data.ApplicationData"
        android:allowBackup="true"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/ic_launcher"
        android:installLocation="internalOnly"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen">
        <!--activities, services...-->
</application>

【讨论】:

【参考方案4】:

我想在这个我面临几天的问题中补充一点。我尝试了所有答案,但这些对我不起作用。如果您使用的是 android 5.1 版,请更改这些设置。

如果您使用的是 android 5.1 版,则必须从应用设置中取消选择(限制启动)。

设置>应用>你的应用>限制启动(取消选择)

请看图。

【讨论】:

以上是关于如何在启动时启动/启动应用程序 Android的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PhoneGap 应用启动时启动 Android 活动?

Android 应用程序不会在启动时启动

在 Android 应用冷启动时,阻止网络请求,直到 *** 启动

如何在安装时启动android服务

如何使用firebase在android应用启动时查询“列表数据”?

当应用程序在android上关闭时如何阻止重新启动服务?