初回起動時の判断 | first launch the application? | Android

スポンサーリンク

スポンサーリンク

初回起動の判断方法

初めてアプリを起動したときにのみ表示させるダイアログや設定手続きを実装したいとき、どのようにすればよいでしょうか。

もっとも簡単な方法はプリファレンスを使う方法です。

起動の際に何らかのデータを端末に保存します。そのデータが存在していれば2回目以降、存在していなければ、初めての起動という判断です。

今回はプリファレンスの保存と読み込みを扱います。

データの保存

以下のコードでデータの保存を行います。

public class MainActivity extends AppCompatActivity {
    private final String preName = "MAIN_SETTING";
    private final String dataIntPreTag ="dataIPT";
    private SharedPreferences sharedPreferences;
    private SharedPreferences.Editor edit;
    private int dataInt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dataInt = 100;
        sharedPreferences = getSharedPreferences(preName, MODE_PRIVATE);
        edit = sharedPreferences.edit();
        edit.putInt(dataIntPreTag,dataInt).apply();

    }
}

詳しい解説は別途、プリファレンスの項目で行いますが、dataIntとして100の値を保存しています。

今回はこのアプリのみ使うデータですからMODE_PRIVATEとして設定します。

putIntでint型のデータを保存します。apply()をお忘れなく。(古い情報では書かれていないことがあります)

もちろん、booleanであればputBooleanといった具合です。

データの読み込み

データを読み込む際は、以下のように記述します。

dataInt = sharedPreferences.getInt(dataIntPreTag, 0);

dataIntPreTagと設定したint型のデータを読み取り、もし、そのデータが無かった場合はdataIntに0を入れる。というコードです。

このコードをうまく使えば初回起動の判断ができそうです。

例えばこんなコード、起動した回数をカウントもします。

public class MainActivity extends AppCompatActivity {
    private final String preName = "MAIN_SETTING";
    private final String dataIntPreTag ="dataIPT";
    private SharedPreferences sharedPreferences;
    private SharedPreferences.Editor edit;
    private int dataInt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sharedPreferences = getSharedPreferences(preName, MODE_PRIVATE);;
        dataInt = sharedPreferences.getInt(dataIntPreTag, 0);
        dataInt++;
        edit = sharedPreferences.edit();
        if(dataInt == 1){
            Log.d("Log0","初回起動時です");
            //ここに初回時の動作を記述
            edit.putInt(dataIntPreTag,dataInt).apply();
        }else{
            Log.d("Log0",dataInt+"回目の起動です");
            edit.putInt(dataIntPreTag,dataInt).apply();
        }
    }
}

前のデータが残っていると初回の判断ができませんので、その際は一旦アプリを削除してから実行してみてください。

おわりに

今回は起動回数のカウントを行うこともできるようなコードとしました。初回の判断のみでよければboolean型のプリファレンスでも十分です。この手法を用いれば、初回起動時に「ダウンロードありがとうございます」といったダイアログを表示したりすることができるようになります。