如何在android中运行时将我的应用程序设置为启动器?

时间:2016-11-11 06:25:23

标签: android

我正在开发一个Android应用程序,并希望在运行时作为启动程序启动而不使用清单文件中的类别标记。

<activity
        android:name="com.sample.test.MainActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:label="@string/title_activity_main"
        android:theme="@style/AppTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

1 个答案:

答案 0 :(得分:1)

没有办法直接按照你想要的方式去做。要设置启动器活动,您必须编辑清单,而实际上不能这样做 但您可以做的是使用此intent过滤器在清单中声明一些LauncherActivity

<activity
        android:name="com.sample.test.LauncherActivity"
        android:label="@string/title_activity_main">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

在其内部的onCreate()方法中读取以前保存的活动名称,您真的需要从SharedPreferences点击应用图标开始,然后启动它。像这样:

public class LauncherActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String activityToLaunch = getSharedPreferences("LauncherActivity", MODE_PRIVATE).getString("LauncherActivity", "Some default Activity");
        Intent intent;
        switch (activityToLaunch) {
            case "SomeActivity1":
                intent = new Intent(this, SomeActivity1.class);
                break;
            case "SomeActivity2":
                intent = new Intent(this, SomeActivity2.class);
                break;
            case "SomeActivity3":
                intent = new Intent(this, SomeActivity3.class);
                break;
            default:
                intent = new Intent(this, SomeDefaultActivity.class);
                break;
        }
        startActivity(intent);
        finish();
    }
}