完善android10以下的备份和回复流程
This commit is contained in:
parent
537302a0ef
commit
08698a666b
@ -73,6 +73,8 @@ import androidx.core.app.ActivityOptionsCompat;
|
|||||||
import pub.devrel.easypermissions.AfterPermissionGranted;
|
import pub.devrel.easypermissions.AfterPermissionGranted;
|
||||||
import pub.devrel.easypermissions.EasyPermissions;
|
import pub.devrel.easypermissions.EasyPermissions;
|
||||||
|
|
||||||
|
import static com.cege.games.release.dialog.QRCodeActivity.RC_SAVE_QR;
|
||||||
|
|
||||||
|
|
||||||
public class MainActivity extends Activity
|
public class MainActivity extends Activity
|
||||||
implements Cocos2dxHelper.Cocos2dxHelperListener, EasyPermissions.PermissionCallbacks {
|
implements Cocos2dxHelper.Cocos2dxHelperListener, EasyPermissions.PermissionCallbacks {
|
||||||
@ -414,6 +416,19 @@ public class MainActivity extends Activity
|
|||||||
RC_LOAD_KEY, perms);
|
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
|
* scan qrcode
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package com.cege.games.release.dialog;
|
package com.cege.games.release.dialog;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
@ -14,7 +16,13 @@ import com.cege.games.release.R;
|
|||||||
import com.jc.jcfw.util.FileUtils;
|
import com.jc.jcfw.util.FileUtils;
|
||||||
import com.king.zxing.util.CodeUtils;
|
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 final Context baseContent;
|
||||||
private TextView titleLabel;
|
private TextView titleLabel;
|
||||||
@ -23,6 +31,7 @@ public class QRCodeActivity extends Dialog {
|
|||||||
private Bitmap bitmap;
|
private Bitmap bitmap;
|
||||||
private Button localBtn;
|
private Button localBtn;
|
||||||
private boolean imgSaved = false;
|
private boolean imgSaved = false;
|
||||||
|
public static final int RC_SAVE_QR = 0X111;
|
||||||
|
|
||||||
|
|
||||||
public QRCodeActivity(Context context) {
|
public QRCodeActivity(Context context) {
|
||||||
@ -56,6 +65,7 @@ public class QRCodeActivity extends Dialog {
|
|||||||
titleLabel.setText(title);
|
titleLabel.setText(title);
|
||||||
ivCode.setImageBitmap(bitmap);
|
ivCode.setImageBitmap(bitmap);
|
||||||
});
|
});
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
String uri = FileUtils.saveBitmap(baseContent, oid, bitmap);
|
String uri = FileUtils.saveBitmap(baseContent, oid, bitmap);
|
||||||
MainActivity.app.runOnUiThread(()->{
|
MainActivity.app.runOnUiThread(()->{
|
||||||
if (uri != null && !"".equals(uri)) {
|
if (uri != null && !"".equals(uri)) {
|
||||||
@ -67,14 +77,11 @@ public class QRCodeActivity extends Dialog {
|
|||||||
MainActivity.app.showToast("Wallet restore key save fail");
|
MainActivity.app.showToast("Wallet restore key save fail");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}).start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onClickSaveImg(){
|
}).start();
|
||||||
if (imgSaved) {
|
|
||||||
dismiss();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
public void saveAndClose() {
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
String uri = FileUtils.saveBitmap(baseContent, oid, bitmap);
|
String uri = FileUtils.saveBitmap(baseContent, oid, bitmap);
|
||||||
MainActivity.app.runOnUiThread(()->{
|
MainActivity.app.runOnUiThread(()->{
|
||||||
@ -87,4 +94,42 @@ public class QRCodeActivity extends Dialog {
|
|||||||
});
|
});
|
||||||
}).start();
|
}).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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,8 @@ public class FileUtils {
|
|||||||
return fileName;
|
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();
|
ContentValues values = new ContentValues();
|
||||||
values.put(MediaStore.Images.Media.TITLE, title);
|
values.put(MediaStore.Images.Media.TITLE, title);
|
||||||
values.put(MediaStore.Images.Media.DISPLAY_NAME, title);
|
values.put(MediaStore.Images.Media.DISPLAY_NAME, title);
|
||||||
@ -98,15 +99,15 @@ public class FileUtils {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cr.delete(url, null, null);
|
cr.delete(url, null, null);
|
||||||
return storeToAlternateSd(source, filename);
|
return storeToAlternateSd(activity, source, filename);
|
||||||
// url = null;
|
// url = null;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
cr.delete(url, null, null);
|
cr.delete(url, null, null);
|
||||||
return storeToAlternateSd(source, filename);
|
|
||||||
// url = null;
|
// url = null;
|
||||||
}
|
}
|
||||||
|
return storeToAlternateSd(activity, source, filename);
|
||||||
}
|
}
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
stringUrl = url.toString();
|
stringUrl = url.toString();
|
||||||
@ -123,14 +124,11 @@ public class FileUtils {
|
|||||||
* @param src
|
* @param src
|
||||||
* @return - the file's path
|
* @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)
|
if(src == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
File sdCardDirectory = new File(Environment.getExternalStorageDirectory() + File.separator + "My Cards");
|
String sdCardDirectory = getPath(activity);
|
||||||
if(!sdCardDirectory.exists())
|
|
||||||
sdCardDirectory.mkdir();
|
|
||||||
|
|
||||||
File image = new File(sdCardDirectory, filename + ".jpg");
|
File image = new File(sdCardDirectory, filename + ".jpg");
|
||||||
try {
|
try {
|
||||||
FileOutputStream imageOut = new FileOutputStream(image);
|
FileOutputStream imageOut = new FileOutputStream(image);
|
||||||
@ -148,7 +146,7 @@ public class FileUtils {
|
|||||||
public static String saveBitmap(Context activity, String oid, Bitmap bitmap) {
|
public static String saveBitmap(Context activity, String oid, Bitmap bitmap) {
|
||||||
String title = "wallet_key_" + oid;
|
String title = "wallet_key_" + oid;
|
||||||
String imageName = "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);
|
Log.i(TAG, "save image success: " + uri);
|
||||||
return uri;
|
return uri;
|
||||||
}
|
}
|
||||||
@ -160,13 +158,13 @@ public class FileUtils {
|
|||||||
try {
|
try {
|
||||||
data = MediaStore.Images.Media.getBitmap(activity.getContentResolver(),uri);
|
data = MediaStore.Images.Media.getBitmap(activity.getContentResolver(),uri);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
data = readImageFromExt(oid);
|
data = readImageFromExt(activity, oid);
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Bitmap readImageFromExt(String oid) {
|
public static Bitmap readImageFromExt(Context activity, String oid) {
|
||||||
File sdCardDirectory = new File(Environment.getExternalStorageDirectory() + File.separator + "My Cards");
|
String sdCardDirectory = getPath(activity);
|
||||||
String imageName = "wallet_key_" + oid;
|
String imageName = "wallet_key_" + oid;
|
||||||
File file = new File(sdCardDirectory, imageName + ".jpg");
|
File file = new File(sdCardDirectory, imageName + ".jpg");
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user