完善android10以下的备份和回复流程

This commit is contained in:
cebgcontract 2022-11-10 18:14:05 +08:00
parent 537302a0ef
commit 08698a666b
3 changed files with 88 additions and 30 deletions

View File

@ -73,6 +73,8 @@ import androidx.core.app.ActivityOptionsCompat;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;
import static com.cege.games.release.dialog.QRCodeActivity.RC_SAVE_QR;
public class MainActivity extends Activity
implements Cocos2dxHelper.Cocos2dxHelperListener, EasyPermissions.PermissionCallbacks {
@ -414,6 +416,19 @@ public class MainActivity extends Activity
RC_LOAD_KEY, perms);
}
}
@AfterPermissionGranted(RC_SAVE_QR)
private void checkSavePermissions(){
String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (EasyPermissions.hasPermissions(this, perms)) {
if (qrCodeActivity != null) {
qrCodeActivity.saveAndClose();
}
} else {
// Do not have permissions, request them now
EasyPermissions.requestPermissions(MainActivity.app, "We need Write WRITE_EXTERNAL_STORAGE for backup Wallet Restore Key",
RC_SAVE_QR, perms);
}
}
/**
* scan qrcode

View File

@ -1,8 +1,10 @@
package com.cege.games.release.dialog;
import android.Manifest;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
@ -14,7 +16,13 @@ import com.cege.games.release.R;
import com.jc.jcfw.util.FileUtils;
import com.king.zxing.util.CodeUtils;
public class QRCodeActivity extends Dialog {
import java.util.List;
import androidx.annotation.NonNull;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;
public class QRCodeActivity extends Dialog implements EasyPermissions.PermissionCallbacks{
private final Context baseContent;
private TextView titleLabel;
@ -23,6 +31,7 @@ public class QRCodeActivity extends Dialog {
private Bitmap bitmap;
private Button localBtn;
private boolean imgSaved = false;
public static final int RC_SAVE_QR = 0X111;
public QRCodeActivity(Context context) {
@ -56,25 +65,23 @@ public class QRCodeActivity extends Dialog {
titleLabel.setText(title);
ivCode.setImageBitmap(bitmap);
});
String uri = FileUtils.saveBitmap(baseContent, oid, bitmap);
MainActivity.app.runOnUiThread(()->{
if (uri != null && !"".equals(uri)) {
MainActivity.app.showToast("Wallet restore key had save to System Album");
titleLabel.setText("Wallet Restore Key");
localBtn.setText("Close");
imgSaved = true;
} else {
MainActivity.app.showToast("Wallet restore key save fail");
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
String uri = FileUtils.saveBitmap(baseContent, oid, bitmap);
MainActivity.app.runOnUiThread(()->{
if (uri != null && !"".equals(uri)) {
MainActivity.app.showToast("Wallet restore key had save to System Album");
titleLabel.setText("Wallet Restore Key");
localBtn.setText("Close");
imgSaved = true;
} else {
MainActivity.app.showToast("Wallet restore key save fail");
}
});
}
}).start();
}
protected void onClickSaveImg(){
if (imgSaved) {
dismiss();
return;
}
public void saveAndClose() {
new Thread(() -> {
String uri = FileUtils.saveBitmap(baseContent, oid, bitmap);
MainActivity.app.runOnUiThread(()->{
@ -87,4 +94,42 @@ public class QRCodeActivity extends Dialog {
});
}).start();
}
protected void onClickSaveImg(){
if (imgSaved) {
dismiss();
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
saveAndClose();
} else {
checkCameraPermissions();
}
}
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
MainActivity.app.showToast("We need Write WRITE_EXTERNAL_STORAGE for backup Wallet Restore Key");
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
}
@AfterPermissionGranted(RC_SAVE_QR)
private void checkCameraPermissions(){
String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (EasyPermissions.hasPermissions(this.baseContent, perms)) {
saveAndClose();
} else {
// Do not have permissions, request them now
EasyPermissions.requestPermissions(MainActivity.app, "We need Write WRITE_EXTERNAL_STORAGE for backup Wallet Restore Key",
RC_SAVE_QR, perms);
}
}
}

View File

@ -66,7 +66,8 @@ public class FileUtils {
return fileName;
}
public static String insertImageIntoGallery(ContentResolver cr, Bitmap source, String filename, String title) {
public static String insertImageIntoGallery(Context activity, Bitmap source, String filename, String title) {
ContentResolver cr = activity.getContentResolver();
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, title);
values.put(MediaStore.Images.Media.DISPLAY_NAME, title);
@ -98,15 +99,15 @@ public class FileUtils {
}
} else {
cr.delete(url, null, null);
return storeToAlternateSd(source, filename);
return storeToAlternateSd(activity, source, filename);
// url = null;
}
} catch (Exception e) {
if (url != null) {
cr.delete(url, null, null);
return storeToAlternateSd(source, filename);
// url = null;
}
return storeToAlternateSd(activity, source, filename);
}
if (url != null) {
stringUrl = url.toString();
@ -123,14 +124,11 @@ public class FileUtils {
* @param src
* @return - the file's path
*/
private static String storeToAlternateSd(Bitmap src, String filename){
private static String storeToAlternateSd(Context activity, Bitmap src, String filename){
if(src == null)
return null;
File sdCardDirectory = new File(Environment.getExternalStorageDirectory() + File.separator + "My Cards");
if(!sdCardDirectory.exists())
sdCardDirectory.mkdir();
String sdCardDirectory = getPath(activity);
File image = new File(sdCardDirectory, filename + ".jpg");
try {
FileOutputStream imageOut = new FileOutputStream(image);
@ -148,7 +146,7 @@ public class FileUtils {
public static String saveBitmap(Context activity, String oid, Bitmap bitmap) {
String title = "wallet_key_" + oid;
String imageName = "wallet_key_" + oid;
String uri = insertImageIntoGallery(activity.getContentResolver(), bitmap, imageName, title);
String uri = insertImageIntoGallery(activity, bitmap, imageName, title);
Log.i(TAG, "save image success: " + uri);
return uri;
}
@ -160,13 +158,13 @@ public class FileUtils {
try {
data = MediaStore.Images.Media.getBitmap(activity.getContentResolver(),uri);
} catch (IOException e) {
data = readImageFromExt(oid);
data = readImageFromExt(activity, oid);
}
return data;
}
public static Bitmap readImageFromExt(String oid) {
File sdCardDirectory = new File(Environment.getExternalStorageDirectory() + File.separator + "My Cards");
public static Bitmap readImageFromExt(Context activity, String oid) {
String sdCardDirectory = getPath(activity);
String imageName = "wallet_key_" + oid;
File file = new File(sdCardDirectory, imageName + ".jpg");
if (!file.exists()) {