Android 首次启动时的自定义活动(初始化向导)

Android 首次启动时的自定义活动(初始化向导),android,android-intent,wizard,intentfilter,Android,Android Intent,Wizard,Intentfilter,我想定义我自己的“设置向导”应用程序。 为此,我正在使用此意向过滤器,它工作正常: <intent-filter android:priority="5"> <action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.DEVICE_INITIALIZATION_WIZARD" />

我想定义我自己的“设置向导”应用程序。 为此,我正在使用此意向过滤器,它工作正常:

<intent-filter android:priority="5">
        <action android:name="android.intent.action.MAIN" />
        <action android:name="android.intent.action.DEVICE_INITIALIZATION_WIZARD" />
        <category android:name="android.intent.category.HOME" />
        <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

但是我不知道如何判断向导已经结束了。 现在,它只是在我最后一次finish()调用之后循环

我怎么知道呢


Tkx.

对于自定义ROM,我在设置用户后做了如下操作:

PackageManager pm = getPackageManager();
pm.setComponentEnabledSetting(new ComponentName("com.domain.yourapp", "com.domain.yourapp.SetupWizardActivity"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
这是CM安装向导在完成后禁用自身所做的操作。您需要“更改\u组件\u已启用\u状态”权限

我的向导活动在AndroidManifest.xml中包含以下内容:

<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.DEVICE_INITIALIZATION_WIZARD" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />

对于自定义ROM,请执行以下操作:
e、 g.在onPause()或任何其他触发器方法中,执行以下操作:

// set DEVICE_PROVISIONED flag because we will end setup wizard and our application.
Settings.Secure.putInt(getContentResolver(), Settings.Secure.DEVICE_PROVISIONED, 1);
// enable quicksettings
Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);
// remove your activity from package manager
final ComponentName yourActivityCompName = new ComponentName(this, yourSetupWizardClass.class);
final PackageManager packageMngr = getPackageManager();
try {
    packageMngr.setComponentEnabledSetting(yourActivityCompName,
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
} catch (IllegalArgumentException illArgExcp) {
    Log.d(TAG, "IllegalArgumentException: The package name or/and class name you try to remove is not available");
}
finish();

将第二个活动作为您的主要活动,并第一次调用SetupWizard活动情况已经如此,收到此意向的活动只会启动第二个活动我所说的是将SetupWizard作为您的第二个活动,并仅第一次启动它。i、 e不要将其作为您的主要活动。我们是否需要将apk推送到系统/应用程序以使其工作?是的,您的apk必须位于系统/应用程序或系统/私有应用程序内。