初めてアプリケーションをインストールするユーザー向けのウェルカム チュートリアルを追加しようとしています。そのアクティビティは、Main in として宣言する必要がありますManifest
(または、何か見逃していますか?)。しかし、メインのアクティビティ (実際のアプリ) 以外のアクティビティを選択すると、アプリのショートカット (Android 7.1) が機能しなくなります。ただし、カスタム ランチャー (Apex、Nova) でショートカットを引き続き使用できることは興味深いことです。何か案が?
2 に答える
0
CommonWare さん、回答ありがとうございます。あなたの発言は、私が答えを見つけるのに役立ちます。というわけで、スプラッシュ画面を表示するアプリを起動して、チュートリアルへようこそ。また、アプリには、メイン画面に機能するショートカットと、ランチャー アイコンが 1 つだけ必要です。そのため、最初に、スプラッシュ スクリーンをメインとして宣言しますManifest.xml
。
<activity
android:name=".SplashActivity"
android:noHistory="true"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
次に、ウェルカム (チュートリアル) アクティビティ:
<activity
android:name=".IntroActivity.WelcomeActivity"/>
その後、SplashActivity.class
最初の起動を確認します。
public static final String FIRST_APP_LAUNCH = "com.ips.test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (isFirstAppLaunch()) {
setFirstAppLaunch(false);
startActivity(new Intent(this, WelcomeActivity.class));
} else {
startActivity(new Intent(this, MainActivity.class));
}
finish();
}
private boolean isFirstAppLaunch() {
SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
return preferences.getBoolean(FIRST_APP_LAUNCH, true);
}
private void setFirstAppLaunch(boolean value) {
SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(FIRST_APP_LAUNCH, value);
editor.apply();
}
}
最終結果は私が望んでいたとおりです。スプラッシュ画面でアプリを起動すると、ウェルカムチュートリアルが実行されます。次の起動により、メイン アクティビティ (アプリ自体) に続くスプラッシュ スクリーンがトリガーされます。ユーザーがメイン画面のショートカットをクリックすると、ショートカットが取得され、ランチャーにはアプリケーションのショートカットが 1 つだけ表示されます。
于 2016-11-28T18:40:55.563 に答える