2016-11-27 1 views
0

初めてアプリケーションをインストールするユーザーのためにウェルカムチュートリアルを追加しようとしています。そのアクティビティは、Manifestのメインとして宣言する必要があります(または何かが恋しいですか?)。しかし、私がメインアプリケーション以外の他のアクティビティ(実際のアプリケーション)を選択すると、アプリケーションのショートカット(Android 7.1)はもう動作しません。ただし、カスタムランチャー(Apex、Nova)でショートカットを利用できることは興味深いです。何か案が?マニフェストの結果のメインアクティビティをショートカットに変更してもはや動作しません。

+0

まあ、[静的ショートカットは 'MAIN' /' LAUNCHER'アクティビティ](https://developer.android.com/preview/shortcuts.html#static)にしか行きません。 – CommonsWare

+0

ありがとうございます、私は全く同意しますが、私を混乱させるのは、(ほとんどすべての)Google Appsにはランチャーのショートカットだけでなく、歓迎のチュートリアルもあります。彼らはそれをどうやって得ることができないのですか? – IPS

答えて

0

ご回答いただきありがとうございます。あなたの声明は答えを見つけるのに役立ちます。ですから、スプラッシュ画面を表示してから、Welcomeチュートリアルを表示するアプリを起動したいと思います。また、メイン画面にはショートカットや、ランチャーアイコンが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(); 
} 

}

最終結果は私の欲しいものです:スプラッシュ画面でのアプリの起動Welcomeチュートリアルを実行します。次の起動は、メインアクティビティ(アプリ自体)を続けるスプラッシュ画面をトリガーします。ユーザーがメイン画面でショートカットをクリックするとショートカットが表示され、Launcherではアプリケーションショートカットが1つだけ表示されます。

0

(ほとんどすべて)Googleアプリには、歓迎のチュートリアルとランチャーショートカットがあります。彼らはそれをどうやって得ることができないのですか?

ウェルカムチュートリアルはアクティビティである必要はありません。それは他の種類のプレゼンテーション(例えば、フラグメント)であってもよい。

歓迎のチュートリアルは、別のアクティビティであっても、ランチャーのアクティビティである必要はありません。ランチャー・アクティビティーは、それが最初の実行であることを検出し、チュートリアル・アクティビティーを開始しました。

関連する問題