0

QRスキャナアプリがあります。アプリには3つのアクティビティがあります。インストール後にアクティビティを1回だけ起動します。

1)主な活動 - ボタンカメラを開き、

2)QRアクティビティスキャンを開始する - QRコードをスキャンし

3)のWebアクティビティ - 成功したスキャンでは、アプリ

でWebページを開きます

ここで、メインアクティビティとQRアクティビティは、最初のインストール後に初めて1回だけ起動する必要があります。私は共有された環境設定を使うことについてどこか読んでいます。しかし、私は、どのアクティビティのように、変数をどこでチェックするのかについて少し混乱しています。メインアクティビティで共有変数をチェックする必要がありますか?

これは私の最初のアプリです。申し訳ありませんが、これは愚かな疑いです。

答えて

1

を役に立てば幸いあなたのメインアクティビティに "firstLaunch"チェックを入れたり、別の "スプラッシュ"アクティビティに入れることができます

あなたはまた

を活動を終了し、Webアクティビティを起動したり、メインアクティビティロジックを表示するかどうか、あなたが決定するまで、単にいくつかの中間色にUIを設定する主な活動でそれを置くためには、「作成することができますバリアフリーを確認したり、開くべきアクティビティを決めるブリッジアクティビティ(ロゴや素晴らしい背景色を示す)として機能することができるスプラッシュスクリーンAndroid splash

+0

ねえ、私は共有の設定でやったことで私の答えを編集しました。しかし、私のアプリがクラッシュする – SMG

+0

@SMGあなたのsharedPrefrencesチェックは良い買い物に見えるなぜあなたはハンドラの内部でチェックを実行するのですか?私たちが助けることができるので、logcatを表示するエラーについては、 –

+0

あなたのすべてのご協力ありがとうございます。私は働くアプリで私の答えを編集しました.. – SMG

1

正しいですが、SharedPreferencesで行う必要があります。を示した最初の活動で

Here is a good explaination about how to use them

、あなたはonCreate方法でこれらの行を追加する必要があります。

//this retrieve the sharedpreference element 
SharedPreference myPref = this.getSharedPreferences(
    "prefName", Context.MODE_PRIVATE); 
//this retrieve the boolean "firstRun", if it doesn't exists, it places "true" 
var firstLaunch = myPref.getBoolean("firstLaunch", true); 
//so, if it's not the first run do stuffs 
if(!firstLaunch){ 
    //start the next activity 
    finish(); 
}  
//else, if it's the first run, add the sharedPref 
myPref.edit().putBoolean("firstLaunch", false).commit(); 

を@PierジョルジオMisleyを完了するために、これは

+0

にこのコードを書きました。しかし、私は1つの疑いがあります。上記のコードはどこに書きますか?私の主な活動は? – SMG

+0

私はそれを書いた.. onCreateメソッドで起動された最初のアクティビティで:) –

0

桟橋が言及したように、行く。しかし、古いデバイスの中には共有設定が信頼できないことがあります。

代わりにSQLiteデータベースを使用することをお勧めします。その後

TABLE NAME: SEEN_ACTIVITY 
Column 1: ID INT PRIMARY KEY 
Column 2: SEEN VARCHAR 

を次のように活動が開始された後

はSEEN_ACTIVITYのid =「0」のレコードがあるかどうかを確認、テーブルを作成します。そうでない場合は、次のように挿入します(0、真)。

次に、アプリが起動するたびに、(0、true)のレコードが存在するかどうかを確認します。そうでない場合は、追加のアクティビティを開始します。

0
My MainActivity.java 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash); 

    new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      SharedPreferences settings = getSharedPreferences("prefName",MODE_PRIVATE); 
      boolean firstLaunch = settings.getBoolean("firstLaunch", true); 
      if(firstLaunch == false) { 
       SharedPreferences.Editor editor=settings.edit(); 
       editor.putBoolean("firstRun",true); 
       editor.commit(); 
       Intent i = new Intent(SplashActivity.this, MainActivity.class); 
       startActivity(i); 
       finish(); 
      } 
      else { 
       Intent i = new Intent(SplashActivity.this, ScannerActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     } 
    }, SPLASH_TIME_OUT); 
} 

はありがとうござい新しいスプラッシュ活動