ともちゃんのアプリ開発日記

組込みC言語プログラマだったともちゃんが、四苦八苦しながら、AndroidのJAVA/Kotlin、iOSのSwiftUIを習得して行きます。ともちゃんの備忘録も兼ねています。

Playストアのアプリのページを表示する

評価のために、Playストアのアプリのページを表示したいことがあります。

以下の様にします。

String packageName = getPackageName();
Uri uri = Uri.parse("market://details?id=" + packageName);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

 

 

Androidのアプリ内購入のテスト用アカウントの追加

Androidのアプリ内購入の開発では、テスト用アカウントは開発用アカウントとは別に作らなければなりません。開発用アカウントではサンドボックスデバッグはできても、実際の販売形態でのテストができないのです。

私は、

  • メイン機種:Android 5.1.1、開発者用のアカウント、販売形態でのテスト不可
  • 開発用機種:Android 4.1.1、テスト用のアカウント、販売形態でのテスト可

に設定していたのですが、Android 5.1.1でも販売形態でのテストをする必要があります。

 

そこで、色々試した結果、端末を初期化せずにメイン機種にテスト用アカウントを追加し、販売形態でのテストに成功しました。

  1. メイン機種に、既存のテスト用アカウントを追加する。これは端末で「設定」→「アカウント」→「アカウントの追加」→「Google」→「端末のロックNoの入力(設定されていれば)」→「メールアドレス」に既存のテスト用アカウントのメールアドレスを入力する→・・・で出来ます。
  2. Playストアを起動し、先ほど追加したテスト用アカウントに切り替えます。
  3. Playストアでベータ公開されている開発中のアプリを選択しインストールする。

こうすることで、インストールしたベータ公開アプリはテスト用アカウントに紐づけられます。

 

インターネットで調べると「課金アカウントを切り替えるためには端末を初期化しないといけない」と書いてありますが、上記で端末の初期化は回避できます。

 

動作確認機種:auのDIGNO rafre KYV36、Android 5.1.1

 

 

 

SQLiteデータベースの更新

SQLiteデータベースの更新は、update()を使用します。

String whereClause = "_id=" + String.valueOf(id);

ContentValues values = new ContentValues();
values.put("date", date);
values.put("kind", kind);
values.put("money", money);
values.put("category", category);
values.put("item", item);
values.put("memo", memo);
mydb.update("pocket_money_table", values, whereClause, null);

 

 

ポップアップウィンドウでスピナーを使用する

ポップアップウィンドウでスピナーを使うと、例外で落ちることがあります。

その場合、XMLのスピナーの属性に以下を追加します。

android:spinnerMode="dialog"

 

 これにより、スピナーが別ウィンドウで開くようになります。

 

DatePickerの日付を制限する(最小値)

DatePickerの日付を制限する(最小値)

// 最小値
GregorianCalendar minDate = new GregorianCalendar();
minDate.set(2016, 0, 1); // 2016年1月1日
DatePicker datePicker = datePickerDialog.getDatePicker();
datePicker.setMinDate(minDate.getTimeInMillis());

 

 

年月だけのDatePicker(スピナー型)

年月だけのDatePicker(スピナー型)の作り方です。

// 日付設定ダイアログの作成・リスナの登録
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), android.R.style.Theme_Holo_Dialog, DateSetListener, year, monthOfYear, dayOfMonth);

DatePicker datePicker = datePickerDialog.getDatePicker();
int dayId = Resources.getSystem().getIdentifier("day", "id", "android");
datePicker.findViewById(dayId).setVisibility(View.GONE);

// 日付設定ダイアログの表示
datePickerDialog.show();

 

 2017/7/22 追記

Android 7.0以降では、この方法は通用しません。