Проект основан на проекте «Настройки», созданного с использованием шаблона «Начать новый проект для Android Studio» от Android Studio. После успешного создания проекта добавьте новый класс активности (это будет ваша активность запуска в вашем текущем проекте); для этого примера это простая пустая деятельность.
public class HomeScreenActivity extends AppCompatActivity {
}
Затем добавьте AndroidManifest.xml
записи для этой деятельности:
<activity
android:name=".HomeScreenActivity"
android:enabled="false"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Обратите внимание на android:enabled="false"
, что является важной частью здесь. Таким образом, ваша активность запуска будет отключена по умолчанию. Вы измените его состояние после того, как пользователь проведет процесс настройки.
В этом примере я просто добавил SwitchPreference
и изменил состояние HomeScreenActivity
на основании щелчка пользователя.
private SwitchPreference prefEnableDisableHomeScreen;
private PackageManager packageManager;
private ComponentName homeScreenComponent;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
setHasOptionsMenu(true);
packageManager = getActivity().getPackageManager();
homeScreenComponent = new ComponentName(getActivity().getApplicationContext(),
HomeScreenActivity.class);
prefEnableDisableHomeScreen = (SwitchPreference) findPreference("enable_disable_home_screen");
prefEnableDisableHomeScreen.setChecked(getIsComponentEnabled(homeScreenComponent));
prefEnableDisableHomeScreen.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
boolean previousState = prefEnableDisableHomeScreen.isChecked();
setComponentEnabledSetting(homeScreenComponent, previousState
? PackageManager.COMPONENT_ENABLED_STATE_DISABLED
: PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
prefEnableDisableHomeScreen.setChecked(getIsComponentEnabled(homeScreenComponent));
return false;
}
});
}
private boolean getIsComponentEnabled(ComponentName componentName) {
int state = packageManager.getComponentEnabledSetting(componentName);
return PackageManager.COMPONENT_ENABLED_STATE_ENABLED == state;
}
private void setComponentEnabledSetting(ComponentName componentName, int newState) {
packageManager.setComponentEnabledSetting(componentName, newState, PackageManager.DONT_KILL_APP);
}
Надеюсь, это поможет.
Может ли оно отображаться, когда вы нажимаете кнопку «домой» независимо от того, но запускаете ли настройку «Активность», если она не была настроена в первую очередь? Также обратите внимание: вы не можете показывать уведомление, когда приложение загружается, вы ничего не сможете сделать до тех пор, пока приложение не будет запущено. –
Разве это не так просто? [Отключить] (https://developer.android.com/guide/topics/manifest/activity-element.html#enabled) активность с намерением «CATEGORY_HOME» и [включить] (https://developer.android.com/ reference/android/content/pm/PackageManager.html # setComponentEnabledSetting% 28android.content.ComponentName,% 20int,% 20int% 29) это только после того, как пользователь выполнит настройку. – ozbek
@ozbek Умм, не для меня, я все еще новичок. Итак, как мне включить код «CATEGORY_HOME» через код после первого запуска? –