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

Commit cd92b9f

Browse files
authored
Merge pull request #111 from XDagger/develop_ssyijiu
Add backup wallet on splash page
2 parents 0085c38 + be08604 commit cd92b9f

7 files changed

Lines changed: 64 additions & 9 deletions

File tree

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ android {
1010
applicationId "io.xdag.xdagwallet"
1111
minSdkVersion min_version
1212
targetSdkVersion target_version
13-
versionCode 30
14-
versionName "0.3.0"
13+
versionCode 31
14+
versionName "0.3.1"
1515
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1616
externalNativeBuild {
1717
cmake {

app/src/main/java/io/xdag/xdagwallet/activity/UsageActivity.java

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,23 @@
99
import butterknife.BindView;
1010
import butterknife.OnClick;
1111
import com.scottyab.rootbeer.RootBeer;
12+
import com.yanzhenjie.permission.AndPermission;
13+
import com.yanzhenjie.permission.Permission;
14+
1215
import io.reactivex.disposables.Disposable;
1316
import io.xdag.common.Common;
1417
import io.xdag.common.base.ToolbarActivity;
1518
import io.xdag.common.tool.ActivityStack;
1619
import io.xdag.common.tool.ToolbarMode;
20+
import io.xdag.common.util.DeviceUtils;
1721
import io.xdag.common.util.TextStyleUtil;
1822
import io.xdag.xdagwallet.MainActivity;
1923
import io.xdag.xdagwallet.R;
2024
import io.xdag.xdagwallet.config.Config;
2125
import io.xdag.xdagwallet.net.HttpRequest;
2226
import io.xdag.xdagwallet.util.AlertUtil;
2327
import io.xdag.xdagwallet.util.RxUtil;
28+
import io.xdag.xdagwallet.wrapper.XdagHandlerWrapper;
2429

2530
/**
2631
* created by ssyijiu on 2018/7/22
@@ -40,6 +45,8 @@ public class UsageActivity extends ToolbarActivity
4045
View mRootRemindLayout;
4146
CheckBox mCbRootRemind;
4247

48+
AlertDialog.Builder mBuilder;
49+
4350

4451
@Override
4552
protected int getLayoutResId() {
@@ -54,20 +61,25 @@ protected void initView(View rootView, Bundle savedInstanceState) {
5461
.append(getString(R.string.use_explain_1))
5562
.append(getString(R.string.use_explain_2))
5663
.append(getString(R.string.use_explain_3))
57-
.setForegroundColor(Common.getColor(R.color.RED))
5864
.append(getString(R.string.use_explain_4))
5965
.append(getString(R.string.use_explain_5))
60-
.setForegroundColor(Common.getColor(R.color.RED))
6166
.appendLine()
6267
.append(getString(R.string.use_explain_6))
63-
.append(getString(R.string.use_explain_7))
68+
.append(getString(R.string.network_upgrade_0_6_1))
69+
.setForegroundColor(Common.getColor(R.color.RED))
6470
.create()
6571
);
6672

6773
mCbBackup.setOnCheckedChangeListener(this);
6874
mCbNoShow.setOnCheckedChangeListener(this);
6975
mRootRemindLayout = View.inflate(mContext, R.layout.dialog_item_checkbox, null);
7076
mCbRootRemind = mRootRemindLayout.findViewById(R.id.dialog_cb);
77+
78+
mBuilder = new AlertDialog.Builder(mContext)
79+
.setTitle(R.string.warning)
80+
.setMessage(R.string.cover_explain)
81+
.setPositiveButton(R.string.cover, (dialog, which) -> backupWallet())
82+
.setNegativeButton(R.string.cancel, null);
7183
}
7284

7385

@@ -109,6 +121,20 @@ protected void initView(View rootView, Bundle savedInstanceState) {
109121
}
110122

111123

124+
@OnClick(R.id.explain_btn_backup)
125+
void explain_btn_backup() {
126+
if (DeviceUtils.afterQ()) {
127+
checkBackup();
128+
} else {
129+
AndPermission.with(mContext)
130+
.runtime()
131+
.permission(Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE)
132+
.onGranted(data -> checkBackup())
133+
.onDenied(strings -> AlertUtil.show(mContext, getString(R.string.no_file_access_permission)))
134+
.start();
135+
}
136+
}
137+
112138
@OnClick(R.id.explain_btn_start)
113139
void explain_btn_start() {
114140
if (!Config.isUserBackup()) {
@@ -128,6 +154,22 @@ void explain_btn_pool() {
128154
}
129155

130156

157+
private void checkBackup() {
158+
if (XdagHandlerWrapper.hasBackup()) {
159+
mBuilder.create().show();
160+
} else {
161+
backupWallet();
162+
}
163+
}
164+
165+
private void backupWallet() {
166+
if (XdagHandlerWrapper.getInstance(this).backupWallet()) {
167+
AlertUtil.show(mContext, R.string.success_backup_xdag_wallet);
168+
} else {
169+
AlertUtil.show(mContext, R.string.error_backup_xdag_wallet);
170+
}
171+
}
172+
131173
public static boolean isNotDisplay() {
132174
return Config.isUserBackup() && Config.isNotDisplayUsage();
133175
}

app/src/main/java/io/xdag/xdagwallet/wrapper/XdagHandlerWrapper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ public class XdagHandlerWrapper {
5959
private static XdagHandlerWrapper sInstance = null;
6060

6161

62-
public static XdagHandlerWrapper getInstance(MainActivity activity) {
62+
public static XdagHandlerWrapper getInstance(Activity activity) {
6363
synchronized (XdagHandlerWrapper.class) {
64-
if (sInstance == null) {
64+
if (sInstance == null || activity.isDestroyed() || activity.isFinishing()) {
6565
synchronized (XdagHandlerWrapper.class) {
6666
sInstance = new XdagHandlerWrapper(activity);
6767
}
@@ -72,7 +72,7 @@ public static XdagHandlerWrapper getInstance(MainActivity activity) {
7272
}
7373

7474

75-
private XdagHandlerWrapper(MainActivity activity) {
75+
private XdagHandlerWrapper(Activity activity) {
7676
mActivity = activity;
7777
HandlerThread handlerThread = new HandlerThread("XdagProcessThread");
7878
handlerThread.start();

app/src/main/res/layout/activity_use_explain.xml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,22 @@
1818
android:lineSpacingExtra="@dimen/space_8"
1919
tools:text="说明文字"/>
2020

21+
<Button
22+
style="@style/XDAG.Button"
23+
android:id="@+id/explain_btn_backup"
24+
android:text="@string/more_backup_wallet"
25+
android:layout_marginTop="@dimen/space_16"
26+
app:layout_constraintBottom_toTopOf="@id/explain_btn_pool"
27+
app:layout_constraintTop_toBottomOf="@id/explain_tv_explain_text"
28+
app:layout_constraintVertical_chainStyle="packed"/>
29+
2130
<Button
2231
style="@style/XDAG.Button"
2332
android:id="@+id/explain_btn_pool"
2433
android:layout_marginTop="@dimen/space_16"
2534
android:text="@string/more_pool"
2635
app:layout_constraintBottom_toTopOf="@id/explain_btn_start"
27-
app:layout_constraintTop_toBottomOf="@id/explain_tv_explain_text"
36+
app:layout_constraintTop_toBottomOf="@id/explain_btn_backup"
2837
app:layout_constraintVertical_chainStyle="packed"/>
2938

3039
<Button
@@ -53,6 +62,7 @@
5362
android:layout_height="wrap_content"
5463
android:layout_marginTop="@dimen/space_4"
5564
android:text="@string/not_show_explain"
65+
android:visibility="gone"
5666
android:textSize="@dimen/size_text"
5767
app:layout_constraintBottom_toBottomOf="parent"
5868
app:layout_constraintLeft_toLeftOf="@id/explain_btn_start"

app/src/main/res/layout/fragment_more.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
android:id="@+id/more_setting"
4343
android:layout_width="match_parent"
4444
android:layout_height="wrap_content"
45+
android:visibility="gone"
4546
android:background="@color/WHITE"
4647
android:text="@string/setting" />
4748

app/src/main/res/values-zh/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
<string name="use_explain_5">任何卸载应用、删除数据的行为都将造成钱包文件丢失,且无法找回,请您在进行这些操作前务必备份您的钱包。\n</string>
106106
<string name="use_explain_6">为保证钱包事物的连续性,目前的版本应用内的很多弹框都不可取消,请您见谅。\n</string>
107107
<string name="use_explain_7">我们在后续版本中将改善这个问题。</string>
108+
<string name="network_upgrade_0_6_1">XDAG 0.6.1 主网升级后,该安卓钱包将不再支持转账操作,请务必将钱包备份文件导出到电脑钱包使用。\n钱包备份路径:Documents/xdag_backup.zip</string>
108109
<string name="restore_explain_1">XDAG 因为其独特的设计,\n</string>
109110
<string name="restore_explain_2">目前不支持私钥、助记词等方式备份和恢复钱包。\n</string>
110111
<string name="restore_explain_3">您只能通过以下钱包文件来备份和恢复您的钱包:\n</string>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@
113113
<string name="use_explain_5">Uninstalling or deleting data will cause loss of wallet, and NO WAY TO RECOVER. Please backup your wallet first.\n</string>
114114
<string name="use_explain_6">To ensure transactions, popups are not cancelable.\n</string>
115115
<string name="use_explain_7">We will improve this in later releases.</string>
116+
<string name="network_upgrade_0_6_1">After the XDAG 0.6.1 mainnet upgrade, this Android wallet will no longer support transfer operations. Please make sure to export the wallet backup file to your computer wallet for use.\nWallet backup path: Documents/xdag_backup.zip</string>
116117
<string name="restore_explain_1">Due to special data structure of XDAG, \n</string>
117118
<string name="restore_explain_2">XDAG wallet doesn\'t support backup or restore through private key or mnemonic code currently.\n</string>
118119
<string name="restore_explain_3">You can only backup and restore your wallet by files in xdag folder.\n</string>

0 commit comments

Comments
 (0)