2016-05-12 9 views
1

以下のコードは、最初にアプリケーションをインストールした場合に動作しますが、これはレジスタの有効性を表示しますが、アプリケーションをアンインストールして再インストールすると、活動アクティビティを一度しか表示しないアプリケーションをインストールまたは再インストールする場合

Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("isFirstRun", true); 
     if (isFirstRun) { 
      //show start activity 
      startActivity(new Intent(Register.this, MainActivity.class)); 
      Toast.makeText(Register.this, "First Run", Toast.LENGTH_LONG) 
        .show(); 
     } 
     getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit().putBoolean("isFirstRun", false).commit(); 

を登録するには、ユーザーはどのように私はtはその後二度とおき初めてアプリケーションをインストールし、上のレジスタ・アクティビティ・ショーを有効にするには、このコードを変更ください。

+0

1台の端末で初めてですか?またはユーザーですか?デバイスごとに –

+0

... – Blaze

+0

このデバイスが既に登録されていることを明示するファイルをsdカードに書き込みます。 –

答えて

0

デフォルトはgetBoolean(...,true)にtrueを設定しているため、設定が削除されるとtrueが実行されます。すべてのブール値を反対に変更します。

+0

あなたは正しいと思います – Blaze

1

アプリに接続されているすべてのデータ(SharedPreferences)は、ユーザーがアプリを削除したときにAndroidによって削除されるため、デバイスのメモリには依存できません。さらに、デバイスを工場出荷時の設定にリセットすることができます。この場合、デバイスのメモリに保存されたデータも消去されます。

あなたがしたいことを行うための唯一の方法は、アプリが接続するクラウド上に外部データベースを作成し、デバイスのID(MACアドレス)を送信して、最初のものかどうかを示すフラグ走るかしない。クラウド内のデータベースは既にMACアドレスを含んでいるかどうかをチェックします:もしそうであれば、そのデバイス上で既に実行されているアプリを意味し、そうでない場合は初めて新しいMACアドレスがデータベースに保存されます。

別の方法として、デバイスのメモリにデバイスをマーキングするためのファイルを生成する方法があります。アプリがファイルを見つけたら、すでにそこで実行されていることがわかります。この方法は、実装が簡単で、2つの場合のみを除いて非常に有効です。ユーザーが手動でファイルを削除するか、デバイスが工場出荷時の設定にリセットされます。これを達成するための2つの方法がある

+1

あなたは正確にどのMacアドレスについてお話ししていますか? –

0

  1. クラウド - クラウド内の格納デバイスID(またはデバイスの任意の他の一意のID)
  2. デバイス - デバイスの外部記憶装置にフラグを格納

第1の方法はより安全で信頼性が高いですが、インターネット接続とデータを格納するサーバーが必要です(紺碧やawsや独自のサーバー/ apiなどの雲になる可能性があります)

second w ayははるかに簡単ですが、外部ストレージが消去または切り離される可能性があるため信頼性がありません。

これまでのところ、最良の解決策は、デバイスIDをクラウドに格納し、インストールまたはアプリケーションの開始プロセス中に確認することです。

1

より良い方法は、最初の実行の情報を保持するdbテーブルを作成することです。アンインストールdbは削除されます。

+0

これはあまり良くありません。小さなデータビットの場合、データベースは過剰です –

関連する問題