Skip to content
This repository was archived by the owner on May 16, 2025. It is now read-only.

Commit 7c2ffb9

Browse files
committed
[WIP] Improve custom app list
1 parent 5695592 commit 7c2ffb9

File tree

5 files changed

+407
-80
lines changed

5 files changed

+407
-80
lines changed

app/src/main/java/me/s1204/payment/selector/ClearActivity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.app.Activity;
44
import android.app.AlertDialog;
55
import android.os.Bundle;
6+
import android.widget.Toast;
67

78
public class ClearActivity extends Activity {
89

@@ -28,8 +29,9 @@ private void checkUserAcception() {
2829
* @author Syuugo
2930
*/
3031
private void clearList() {
31-
//TODO: リストをクリア
32+
PaymentSelector.savePackageListToPrefs(this, new String[]{});
3233
finishAndRemoveTask();
34+
Toast.makeText(this, "アプリ一覧をクリアしました", Toast.LENGTH_SHORT).show();
3335
}
3436

3537
/// @see #checkUserAcception()

app/src/main/java/me/s1204/payment/selector/PaymentSelector.java

Lines changed: 57 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,79 +2,64 @@
22

33
import android.app.Activity;
44
import android.content.ActivityNotFoundException;
5+
import android.content.Context;
56
import android.content.Intent;
7+
import android.content.SharedPreferences;
68
import android.content.pm.ApplicationInfo;
79
import android.content.pm.PackageManager;
810
import android.graphics.drawable.Drawable;
911
import android.os.Bundle;
12+
import android.text.TextUtils;
1013
import android.util.DisplayMetrics;
14+
import android.util.Log;
1115
import android.util.TypedValue;
1216
import android.widget.Button;
1317
import android.widget.LinearLayout;
1418
import android.widget.Toast;
1519

1620
public 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

Comments
 (0)