42

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

4

4 回答 4

86

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

第一步:在 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>

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

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

}
于 2012-05-03T09:32:25.360 回答
15

如果您想在平板电脑启动时启动应用程序,您需要监听 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 添加到清单来修改清单文件:

<receiver android:name=".MyBroadcastReceiver">
    <intent-filter>
       <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
于 2012-05-03T09:47:07.627 回答
5

@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>
于 2017-03-20T09:49:38.280 回答
1

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

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

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

请看图片。

图片

于 2017-08-30T06:24:10.223 回答