22
33import android .app .Activity ;
44import android .content .ActivityNotFoundException ;
5+ import android .content .Context ;
56import android .content .Intent ;
7+ import android .content .SharedPreferences ;
68import android .content .pm .ApplicationInfo ;
79import android .content .pm .PackageManager ;
810import android .graphics .drawable .Drawable ;
911import android .os .Bundle ;
12+ import android .text .TextUtils ;
1013import android .util .DisplayMetrics ;
14+ import android .util .Log ;
1115import android .util .TypedValue ;
1216import android .widget .Button ;
1317import android .widget .LinearLayout ;
1418import android .widget .Toast ;
1519
1620public class PaymentSelector extends Activity {
1721
18- // 決済アプリリスト
19- private static final String [] packageList = {
20- "com.google.android.apps.walletnfcrel" , // Google ウォレット
21- "jp.ne.paypay.android.app" , // PayPay
22- "jp.co.rakuten.pay" , // 楽天ペイ
23- "com.nttdocomo.keitai.payment" , // d払い
24- "jp.co.family.familymart_app" , // ファミペイ
25- "com.smbc_card.vpoint" , // VポイントPay
26- "com.lecipapp" , // QUICK RIDE
27- "jp.co.westjr.wester" , // WESTER
28- "jp.co.netbk" , // 住信SBI
29- "com.MinnaNoGinko.bankapp" // みんなの銀行
30- };
31-
32- private static final String DOUBLE_PRESS = "function_key_config_doublepress" ;
33- private static final String DOUBLE_PRESS_TYPE = DOUBLE_PRESS + "_type" ;
34- private static final String DOUBLE_PRESS_VALUE = DOUBLE_PRESS + "_value" ;
35- // LinearLayoutのインスタンス変数
22+ protected static final String PREF_APP_LIST = "app_list" ;
23+ private String [] packageList = {};
3624 private LinearLayout appListLayout ;
3725
38- /**
39- * アプリ起動時の処理
40- *
41- * @since v1.0.0
42- * @see #setPackage(String)
43- * @author Syuugo
44- * @noinspection SpellCheckingInspection
45- */
26+ @ Override
27+ protected void onCreate (Bundle savedInstanceState ) {
28+ super .onCreate (savedInstanceState );
29+ setContentView (R .layout .applist );
30+
31+ // LinearLayout を取得
32+ appListLayout = findViewById (R .id .list );
33+ // SharedPreferences からリストを読み込む
34+ loadPackageListFromPrefs ();
35+ // refresh() を onCreate() の最後に呼び出す
36+ refresh ();
37+ }
38+
4639 private void refresh () {
4740
41+
4842 // アプリ一覧にアプリが1つも無かったら設定アクティビティを立ち上げ終了
4943 if (!checkItemCount ()) {
44+ Log .d ("PaymentSelector" , "No selected apps, starting SettingsActivity" );
5045 startActivity (
51- new Intent (Intent .ACTION_VIEW )
52- .setClassName (getPackageName (), SettingsActivity .class .getName ())
53- .setFlags (Intent .FLAG_ACTIVITY_NEW_TASK )
46+ new Intent (Intent .ACTION_VIEW )
47+ .setClassName (getPackageName (), SettingsActivity .class .getName ())
48+ .setFlags (Intent .FLAG_ACTIVITY_NEW_TASK )
5449 );
5550 finish ();
5651 return ;
5752 }
5853
59- // レイアウトを表示
60- setContentView (R .layout .applist );
61-
62- // LinearLayout を取得
63- appListLayout = findViewById (R .id .list );
54+ // 既存のボタンをすべて削除
55+ appListLayout .removeAllViews ();
6456
6557 // 各パッケージに対してボタンを追加
6658 for (String packageName : packageList ) {
6759 setPackage (packageName );
6860 }
6961 }
7062
71- /**
72- * 決済アプリを起動
73- *
74- * @param packageName 起動対象のパッケージ名
75- * @since v1.0.0
76- * @author Syuugo
77- */
7863 private void setPackage (final String packageName ) {
7964 // パッケージマネージャーを取得
8065 PackageManager pm = getPackageManager ();
@@ -185,25 +170,46 @@ TypedValue.COMPLEX_UNIT_DIP, iconSizeDp, getResources().getDisplayMetrics()
185170 * リストに選択されているアプリの数の確認
186171 *
187172 * @return リストに選択されているアプリの合計数が1以上かどうか
188- * @since v1.1.0
189- * @see SettingsActivity#countSelectedItem()
190- * @author Syuugo
191173 */
192174 private boolean checkItemCount () {
193- return SettingsActivity . countSelectedItem () > 0 ;
175+ return packageList != null && packageList . length > 0 ;
194176 }
195177
196- /// @see #refresh()
197- @ Override
198- protected void onCreate (Bundle savedInstanceState ) {
199- super .onCreate (savedInstanceState );
200- refresh ();
178+
179+ /**
180+ * SharedPreferences からリストを読み込む
181+ */
182+ private void loadPackageListFromPrefs () {
183+ SharedPreferences prefs = getSharedPreferences (PREF_APP_LIST , MODE_PRIVATE );
184+ String packageListString = prefs .getString (PREF_APP_LIST , "" ); // デフォルト値は空文字列
185+
186+ Log .d ("PaymentSelector" , "Loaded package list string: " + packageListString ); //SharedPreferencesの内容確認用Log
187+
188+ if (!packageListString .isEmpty ()) {
189+ packageList = packageListString .split ("," ); // カンマ区切りで分割
190+ Log .d ("PaymentSelector" , "Loaded package list: " + TextUtils .join (", " , packageList )); //分割後のリスト確認用Log
191+ } else {
192+ packageList = new String []{}; // SharedPreferencesが空の場合は空のリストにする
193+ Log .d ("PaymentSelector" , "Package list is empty" );
194+ }
195+ }
196+
197+ /**
198+ * SharedPreferences にリストを保存する
199+ */
200+ public static void savePackageListToPrefs (Context context , String [] list ) {
201+ SharedPreferences prefs = context .getSharedPreferences (PREF_APP_LIST , MODE_PRIVATE );
202+ SharedPreferences .Editor editor = prefs .edit ();
203+
204+ // 配列をカンマ区切りの文字列に変換
205+ String packageListString = TextUtils .join ("," , list );
206+ editor .putString (PREF_APP_LIST , packageListString );
207+ editor .apply ();
201208 }
202209
203210 @ Override
204211 protected void onDestroy () {
205212 super .onDestroy ();
206213 finishAndRemoveTask ();
207214 }
208-
209215}
0 commit comments