5

我想定义我自己的“SetupWizard”应用程序。为此,我使用了这个意图过滤器,它工作正常:

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

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

我怎么能告诉它?

Tkx。

4

2 回答 2

5

对于自定义 ROM,我在设置用户后做了这样的事情:

PackageManager pm = getPackageManager();
pm.setComponentEnabledSetting(new ComponentName("com.domain.yourapp", "com.domain.yourapp.SetupWizardActivity"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);

这是 CM 设置向导完成后禁用自身的操作。您需要 CHANGE_COMPONENT_ENABLED_STATE 权限。

我的向导活动在 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" />
于 2014-03-17T13:06:48.257 回答
0

对于自定义 ROM,请执行以下操作:
例如,在您的 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();
于 2015-07-24T12:55:05.843 回答