これは、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);
}
希望します。
ホームボタンを押しても表示されますが、セットアップアクティビティが最初に設定されていない場合は実行しますか?また、アプリがダウンロードされたときに通知を表示することはできません。アプリを実行するまでは何もできません。 –
それはかなり簡単ではありませんか? [CATEGORY_HOME]インテントと[有効](https://developer.android.com/)でアクティビティを[無効にする](https://developer.android.com/guide/topics/manifest/activity-element.html#enabled) android/content/pm/PackageManager.html#setComponentEnabledSetting%28android.content.ComponentName、%20int、%20int%29)は、ユーザーがセットアップを行った後にのみ表示されます。 – ozbek
@ozbekうーん、私にとっては、私はまだ新しいです。だから、最初の実行後に 'CATEGORY_HOME'をコードで有効にするには? –