diff --git a/app_main/src/main/AndroidManifest.xml b/app_main/src/main/AndroidManifest.xml
index 4bdf6e9e..0f2ce31f 100644
--- a/app_main/src/main/AndroidManifest.xml
+++ b/app_main/src/main/AndroidManifest.xml
@@ -63,6 +63,7 @@
+
@@ -74,9 +75,11 @@
+
+
diff --git "a/app_main/src/main/assets/\347\251\272\347\231\275\346\225\260\346\215\256.dump" "b/app_main/src/main/assets/BLANK(\347\251\272\347\231\275).dump"
similarity index 100%
rename from "app_main/src/main/assets/\347\251\272\347\231\275\346\225\260\346\215\256.dump"
rename to "app_main/src/main/assets/BLANK(\347\251\272\347\231\275).dump"
diff --git a/app_main/src/main/java/cn/rrg/rdv/activities/main/BaseActivity.java b/app_main/src/main/java/cn/rrg/rdv/activities/main/BaseActivity.java
index 4f03533f..ff623c93 100644
--- a/app_main/src/main/java/cn/rrg/rdv/activities/main/BaseActivity.java
+++ b/app_main/src/main/java/cn/rrg/rdv/activities/main/BaseActivity.java
@@ -77,11 +77,6 @@ public void setContentView(View view, ViewGroup.LayoutParams params) {
}
public void setStatus(boolean darkMode) {
- //这里注意下 因为在评论区发现有网友调用setRootViewFitsSystemWindows 里面 winContent.getChildCount()=0 导致代码无法继续
- //是因为你需要在setContentView之后才可以调用 setRootViewFitsSystemWindows
-
- //当FitsSystemWindows设置 true 时,会在屏幕最上方预留出状态栏高度的 padding
- StatusBarUtil.setRootViewFitsSystemWindows(this, false);
//设置状态栏透明
StatusBarUtil.setTranslucentStatus(this);
//一般的手机的状态栏文字和图标都是白色的, 可如果你的应用也是纯白色的, 或导致状态栏文字看不清
diff --git a/app_main/src/main/java/cn/rrg/rdv/activities/px53x/NfcListConsoleActivity.java b/app_main/src/main/java/cn/rrg/rdv/activities/px53x/NfcListConsoleActivity.java
index a4962f33..b827740b 100644
--- a/app_main/src/main/java/cn/rrg/rdv/activities/px53x/NfcListConsoleActivity.java
+++ b/app_main/src/main/java/cn/rrg/rdv/activities/px53x/NfcListConsoleActivity.java
@@ -5,6 +5,7 @@
import cn.rrg.console.define.ICommandTools;
import cn.rrg.console.define.ICommandType;
import cn.rrg.natives.NfcListTools;
+import cn.rrg.rdv.R;
import cn.rrg.rdv.implement.EntryICommandType;
public class NfcListConsoleActivity extends PN53XConsoleActivity {
@@ -31,6 +32,6 @@ protected int startTest(ICommandTools cmd) {
@Override
protected void onTestEnd() {
- showToast("执行完成,您可以观察收集到的标签信息了!");
+ showToast(getString(R.string.finish));
}
}
diff --git a/app_main/src/main/java/cn/rrg/rdv/activities/tools/BaseConsoleActivity.java b/app_main/src/main/java/cn/rrg/rdv/activities/tools/BaseConsoleActivity.java
index 0ac47e0d..9892e871 100644
--- a/app_main/src/main/java/cn/rrg/rdv/activities/tools/BaseConsoleActivity.java
+++ b/app_main/src/main/java/cn/rrg/rdv/activities/tools/BaseConsoleActivity.java
@@ -37,6 +37,7 @@
import cn.dxl.common.util.PrintUtil;
import cn.rrg.rdv.R;
import cn.dxl.common.util.DynamicLineParseUtil;
+import cn.rrg.rdv.implement.TextWatcherImpl;
/*
* TODO 此类留存,用于封装基础控制台!
@@ -142,7 +143,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
throw new RuntimeException("BaseConsoleActivity has some resources did not init!");
}
- txtOutConsole.addTextChangedListener(new TextWatcher() {
+ txtOutConsole.addTextChangedListener(new TextWatcherImpl() {
//存放上次的尾部索引
int last = 0;
@@ -152,10 +153,6 @@ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
last = s.length();
}
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
-
@Override
public void afterTextChanged(Editable s) {
//在文本改变后的回调,这里我们需要截取他的字符串!
@@ -168,7 +165,7 @@ public void afterTextChanged(Editable s) {
}
});
- txtErrConsole.addTextChangedListener(new TextWatcher() {
+ txtErrConsole.addTextChangedListener(new TextWatcherImpl() {
//存放上次的尾部索引
int last = 0;
@@ -178,10 +175,6 @@ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
last = s.length();
}
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
-
@Override
public void afterTextChanged(Editable s) {
//在文本改变后的回调,这里我们需要截取他的字符串!
@@ -193,17 +186,7 @@ public void afterTextChanged(Editable s) {
}
});
- txtLogConsole.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
- }
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
-
- }
-
+ txtLogConsole.addTextChangedListener(new TextWatcherImpl() {
@Override
public void afterTextChanged(Editable s) {
svLogContain.fullScroll(ScrollView.FOCUS_DOWN);
diff --git a/app_main/src/main/java/cn/rrg/rdv/activities/tools/DumpListActivity.java b/app_main/src/main/java/cn/rrg/rdv/activities/tools/DumpListActivity.java
index 13a2c643..da4288f4 100644
--- a/app_main/src/main/java/cn/rrg/rdv/activities/tools/DumpListActivity.java
+++ b/app_main/src/main/java/cn/rrg/rdv/activities/tools/DumpListActivity.java
@@ -10,6 +10,7 @@
import java.io.FileFilter;
import cn.rrg.rdv.javabean.FileBean;
+import cn.rrg.rdv.util.DumpUtils;
import cn.rrg.rdv.util.Paths;
public class DumpListActivity extends FileListActivity {
@@ -40,8 +41,8 @@ private boolean isDumpFileName(String name) {
return false;
}
- private boolean isHardnestedDir(String name) {
- return Paths.HARDNESTED_PATH.equalsIgnoreCase(name);
+ private boolean isHardnestedDir(File name) {
+ return name.isDirectory() && Paths.HARDNESTED_PATH.equalsIgnoreCase(name.getName());
}
@Override
@@ -52,14 +53,20 @@ public boolean accept(File pathname) {
// 1. The name is match!
// 2. not a hardnested res dir.
String name = pathname.getName();
- return isDumpFileName(name) && !isHardnestedDir(name);
+ if (isHardnestedDir(pathname)) {
+ return false;
+ }
+ if (pathname.isDirectory()) {
+ return true;
+ }
+ return isDumpFileName(name) && DumpUtils.isDump(pathname);
}
};
}
@Override
protected String onInitPath() {
- return Paths.DUMP_DIRECTORY;
+ return Paths.TOOLS_DIRECTORY;
}
@Override
diff --git a/app_main/src/main/java/cn/rrg/rdv/activities/tools/FileListActivity.java b/app_main/src/main/java/cn/rrg/rdv/activities/tools/FileListActivity.java
index b5485f30..8ec4e0f6 100644
--- a/app_main/src/main/java/cn/rrg/rdv/activities/tools/FileListActivity.java
+++ b/app_main/src/main/java/cn/rrg/rdv/activities/tools/FileListActivity.java
@@ -2,6 +2,7 @@
import android.app.Activity;
import android.app.AlertDialog;
+import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@@ -20,6 +21,7 @@
import java.util.LinkedList;
import cn.dxl.common.util.FileUtils;
+import cn.dxl.common.widget.ToastUtil;
import cn.rrg.rdv.R;
import cn.rrg.rdv.activities.main.BaseActivity;
import cn.rrg.rdv.binder.FileInfoBinder;
@@ -36,7 +38,6 @@ public enum MODE {
}
protected MultiTypeAdapter multiTypeAdapter;
- protected Items items = new Items();
protected AlertDialog workDialog;
protected ImageButton btnAdd;
@@ -44,13 +45,13 @@ public enum MODE {
protected FileFilter fileFilter;
protected String initPath;
+ protected Items items;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_file_list);
- multiTypeAdapter = new MultiTypeAdapter(items);
initViews();
initActions();
@@ -69,11 +70,15 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
}
private void initViews() {
+ multiTypeAdapter = new MultiTypeAdapter();
RecyclerView rvDumpList = findViewById(R.id.rvDumpList);
- rvDumpList.setAdapter(multiTypeAdapter);
- rvDumpList.setLayoutManager(new LinearLayoutManager(context));
+ items = new Items();
multiTypeAdapter.register(FileBean.class, new FileInfoBinder());
+ multiTypeAdapter.setItems(items);
+
+ rvDumpList.setLayoutManager(new LinearLayoutManager(context));
+ rvDumpList.setAdapter(multiTypeAdapter);
workDialog = new AlertDialog.Builder(context)
.setTitle(R.string.woring)
@@ -103,7 +108,6 @@ public void run() {
}
protected void traverFile2UseRawFile(Uri path) {
- items.clear();
showOrDismissDialog(true);
LinkedList list = new LinkedList<>();
if (path != null) {
@@ -114,49 +118,61 @@ protected void traverFile2UseRawFile(Uri path) {
return;
}
}
+ items.clear();
// 版本不同可以导致迭代思路不同!
while (!list.isEmpty()) {
File f = list.poll();
if (f != null) {
// 处理迭代逻辑!
if (f.isFile()) { // 如果是文件,并且后缀是我们需要的,则进行保存!
- new Thread(new Runnable() {
+ // TODO 是文件!
+ StringBuilder info = new StringBuilder();
+ Date date = new Date(f.lastModified());
+ String dateStr = SimpleDateFormat.getDateTimeInstance().format(date);
+ // 是文件,则拼接大小信息 + 最后修改日期!
+ info.append(FileUtils.getFileLengthIfFile(f));
+ // 拼接最后的修改日期!
+ info.append(" | ").append(dateStr);
+ items.add(new FileBean(f.isFile(), f.getName(), f.getPath(), info.toString(),
+ false) {
@Override
- public void run() {
- // TODO 是文件!
- StringBuilder info = new StringBuilder();
- Date date = new Date(f.lastModified());
- String dateStr = SimpleDateFormat.getDateTimeInstance().format(date);
- // 是文件,则拼接大小信息 + 最后修改日期!
- info.append(FileUtils.getFileLengthIfFile(f));
- // 拼接最后的修改日期!
- info.append(" | ").append(dateStr);
- items.add(new FileBean(
- f.isFile(),
- f.getName(),
- f.getPath(),
- info.toString(),
- false) {
- @Override
- public void onClick() {
- if (mode == MODE.EDIT) {
- onEdit(this);
- } else {
- Intent intent = new Intent().putExtra("file", getPath());
- setResult(Activity.RESULT_OK, intent);
- finish();
- }
- }
+ public void onClick() {
+ if (mode == MODE.EDIT) {
+ onEdit(this);
+ } else {
+ Intent intent = new Intent().putExtra("file", getPath());
+ setResult(Activity.RESULT_OK, intent);
+ finish();
+ }
+ }
+ @Override
+ public boolean onLongClick() {
+ // TODO 实现文件删除或者共享(发送)
+ String[] items = new String[]{getString(R.string.share), getString(R.string.delete)};
+ DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
@Override
- public boolean onLongClick() {
- // TODO 实现文件删除或者共享(发送)
- return true;
+ public void onClick(DialogInterface dialog, int which) {
+ File f = new File(getPath());
+ switch (which) {
+ case 0:
+ FileUtils.shareFile(f);
+ break;
+ case 1:
+ if (FileUtils.delete(f)) {
+ ToastUtil.show(context, getString(R.string.successful), false);
+ } else {
+ ToastUtil.show(context, getString(R.string.failed), false);
+ }
+ initDatas();
+ break;
+ }
}
- });
- updateViews();
+ };
+ new AlertDialog.Builder(context, R.style.CircleDialogStyle).setItems(items, listener).show();
+ return true;
}
- }).start();
+ });
} else {
// 加入队列,以便进入接下来的迭代!
File[] files = f.listFiles(fileFilter);
@@ -167,6 +183,7 @@ public boolean onLongClick() {
}
}
}
+ updateViews();
showOrDismissDialog(false);
}
diff --git a/app_main/src/main/java/cn/rrg/rdv/activities/tools/LoginActivity.java b/app_main/src/main/java/cn/rrg/rdv/activities/tools/LoginActivity.java
index f63c5104..1da521e1 100644
--- a/app_main/src/main/java/cn/rrg/rdv/activities/tools/LoginActivity.java
+++ b/app_main/src/main/java/cn/rrg/rdv/activities/tools/LoginActivity.java
@@ -87,20 +87,12 @@ public void onPermissionNormal(PermissionUtil util) {
Log.d(LOG_TAG, "权限正常!");
}
});
- //6.0以及以上可能需要申请权限
+
String[] permissionArray = new String[]{
- //位置访问 TODO 2019/07/29 从APP必须的动态权限列表移除,替换为有设备需要时动态申请!
- //Manifest.permission.ACCESS_COARSE_LOCATION,
- //内存卡写
Manifest.permission.WRITE_EXTERNAL_STORAGE,
- //内存卡读
Manifest.permission.READ_EXTERNAL_STORAGE,
- //读取手机信息! TODO 2019/08/21 从APP必须的权限移除,目前暂时用不上IMEI!
- //Manifest.permission.READ_PHONE_STATE
};
- //设置可能需要动态请求的权限!
permissionUtil.setPermissions(permissionArray);
- //开始请求!
permissionUtil.checks();
}
@@ -116,7 +108,7 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
}
//如果所有的权限都有才能让他初始化
if (!result) {
- Toast.makeText(this, "部分权限获取失败,请给予权限!", Toast.LENGTH_SHORT).show();
+ Toast.makeText(this, R.string.tips_permission_request_failed, Toast.LENGTH_SHORT).show();
//执行finish,结束当前act,直接退出初始化!!!
finish();
}
diff --git a/app_main/src/main/java/cn/rrg/rdv/fragment/base/AppMainDevicesFragment.java b/app_main/src/main/java/cn/rrg/rdv/fragment/base/AppMainDevicesFragment.java
index 073abef1..8212d9f1 100644
--- a/app_main/src/main/java/cn/rrg/rdv/fragment/base/AppMainDevicesFragment.java
+++ b/app_main/src/main/java/cn/rrg/rdv/fragment/base/AppMainDevicesFragment.java
@@ -228,13 +228,21 @@ public void onClick() {
private void updateDeviceStatus(boolean status) {
Log.d("TAG", "新状态:" + status);
// update device status to bean!
- if (deviceInfoBean != null) {
- deviceInfoBean.setEnable(status);
- }
- for (Object tmp : deviceItems) {
- if (tmp instanceof DeviceInfoBean) {
- if (tmp != deviceInfoBean) {
- ((DeviceInfoBean) tmp).setEnable(!status);
+ if (status) {
+ if (deviceInfoBean != null) {
+ deviceInfoBean.setEnable(status);
+ }
+ for (Object tmp : deviceItems) {
+ if (tmp instanceof DeviceInfoBean) {
+ if (tmp != deviceInfoBean) {
+ ((DeviceInfoBean) tmp).setEnable(false);
+ }
+ }
+ }
+ } else {
+ for (Object tmp : deviceItems) {
+ if (tmp instanceof DeviceInfoBean) {
+ ((DeviceInfoBean) tmp).setEnable(true);
}
}
}
diff --git a/app_main/src/main/java/cn/rrg/rdv/fragment/init/InitFragment.java b/app_main/src/main/java/cn/rrg/rdv/fragment/init/InitFragment.java
index 90562649..ced036f2 100644
--- a/app_main/src/main/java/cn/rrg/rdv/fragment/init/InitFragment.java
+++ b/app_main/src/main/java/cn/rrg/rdv/fragment/init/InitFragment.java
@@ -62,12 +62,11 @@ public void run() {
InitUtil.startLogcat(true);
//进行一些设置的读取初始化!
InitUtil.initSettings();
- //跳转到主页面处理!
- go2MainAct();
} catch (Exception e) {
e.printStackTrace();
- go2MainAct();
}
+ //跳转到主页面处理!
+ go2MainAct();
}
}
diff --git a/app_main/src/main/java/cn/rrg/rdv/util/InitUtil.java b/app_main/src/main/java/cn/rrg/rdv/util/InitUtil.java
index d76c4a5c..9014cd9e 100644
--- a/app_main/src/main/java/cn/rrg/rdv/util/InitUtil.java
+++ b/app_main/src/main/java/cn/rrg/rdv/util/InitUtil.java
@@ -117,7 +117,7 @@ private static void initDumpFile(AssetsUtil au) {
//目标文件夹里是否有这个文件!
if (!(target.exists() && target.isFile())) {
//包里面是否有这个资源文件!
- if (au.isFileExists(Paths.DEFAULT_DUMP_FILE)) {
+ if (au.isFileExists(Paths.DEFAULT_DUMP_NAME)) {
if (au.moveFile(Paths.DEFAULT_DUMP_NAME, Paths.DEFAULT_DUMP_FILE)) {
Log.d(LOG_TAG, "创建默认的空白数据文件成功!");
}
@@ -274,10 +274,6 @@ private static void initSets() throws IOException {
File file = new File(Paths.SETTINGS_FILE);
if (!file.exists())
if (!file.createNewFile()) return;
- //在所有的文件目录检查完毕后,我们需要开始进行一轮设置初始化,取值!
- //*************************************************************
- //TODO 这里我们直接实例化,注册所有的设置类,如果不需要注册直接注释或者移除即可!
- // 他们都是 extends by BaseSetting,实现了注册设置需要的步骤!
BaseSetting[] baseSettings = new BaseSetting[]{
new ChameleonSlotAliasesSetting(),
new ChameleonSlotAliasesStatusSetting(),
diff --git a/app_main/src/main/java/cn/rrg/rdv/util/Paths.java b/app_main/src/main/java/cn/rrg/rdv/util/Paths.java
index b6176b0a..7f70b946 100644
--- a/app_main/src/main/java/cn/rrg/rdv/util/Paths.java
+++ b/app_main/src/main/java/cn/rrg/rdv/util/Paths.java
@@ -23,9 +23,8 @@ public interface Paths {
String KEY_PATH = "keyFile";
String DUMP_PATH = "dumpFile";
String DEFAULT_KEYS_NAME = "default_keys.txt";
- String DEFAULT_DUMP_NAME = "空白数据.dump";
+ String DEFAULT_DUMP_NAME = "BLANK(空白).dump";
String DEFAULT_CMD_NAME = "cmd.json";
- String DEFAULT_PN53X_CONF = "libnfc.conf";
//绝对路径
String TOOLS_DIRECTORY = EXTERNAL_STORAGE_DIRECTORY + "/" + TOOLS_PATH;
@@ -71,6 +70,4 @@ public interface Paths {
String DEFAULT_KEYS_FILE = KEY_DIRECTORY + "/" + DEFAULT_KEYS_NAME;
String DEFAULT_DUMP_FILE = DUMP_DIRECTORY + "/" + DEFAULT_DUMP_NAME;
String DRIVER_DIRECTORY = TOOLS_DIRECTORY + "/" + DRIVER_PATH;
-
- String PN53X_CONF_FILE = PN53X_DIRRECTORY + "/" + DEFAULT_PN53X_CONF;
}
diff --git a/app_main/src/main/res/drawable/bg_circular_grey_radius_16dp.xml b/app_main/src/main/res/drawable/bg_circular_grey_radius_16dp.xml
new file mode 100644
index 00000000..9dcc61cb
--- /dev/null
+++ b/app_main/src/main/res/drawable/bg_circular_grey_radius_16dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app_main/src/main/res/drawable/bg_circular_white_radius_16dp.xml b/app_main/src/main/res/drawable/bg_circular_white_radius_16dp.xml
new file mode 100644
index 00000000..d769b044
--- /dev/null
+++ b/app_main/src/main/res/drawable/bg_circular_white_radius_16dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app_main/src/main/res/drawable/bg_circular_white_radius_5dp.xml b/app_main/src/main/res/drawable/bg_circular_white_radius_5dp.xml
new file mode 100644
index 00000000..6b4b2a4b
--- /dev/null
+++ b/app_main/src/main/res/drawable/bg_circular_white_radius_5dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app_main/src/main/res/drawable/ic_keyboard_arrow_left_grey_24dp.xml b/app_main/src/main/res/drawable/ic_keyboard_arrow_left_grey_24dp.xml
new file mode 100644
index 00000000..17be152a
--- /dev/null
+++ b/app_main/src/main/res/drawable/ic_keyboard_arrow_left_grey_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app_main/src/main/res/layout/act_app_settings.xml b/app_main/src/main/res/layout/act_app_settings.xml
index 3c420619..6e50be4c 100644
--- a/app_main/src/main/res/layout/act_app_settings.xml
+++ b/app_main/src/main/res/layout/act_app_settings.xml
@@ -1,68 +1,79 @@
-
-
-
-
+ android:orientation="vertical"
+ app:use_type="use_padding">
-
+ android:layout_margin="8dp"
+ android:background="@drawable/gradual"
+ android:orientation="vertical">
-
-
-
-
-
+ android:background="@color/md_grey_200"
+ android:padding="10dp"
+ android:text="@string/language"
+ android:textSize="10sp" />
-
+ android:layout_height="1dp"
+ android:background="@color/md_grey_200" />
-
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp">
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app_main/src/main/res/layout/act_console_layout.xml b/app_main/src/main/res/layout/act_console_layout.xml
index 1baaf1a5..8fd2e296 100644
--- a/app_main/src/main/res/layout/act_console_layout.xml
+++ b/app_main/src/main/res/layout/act_console_layout.xml
@@ -1,14 +1,13 @@
-
-
-
+ android:orientation="vertical"
+ app:use_type="use_padding">
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app_main/src/main/res/layout/act_main_proxmark3_rdv4_rrg.xml b/app_main/src/main/res/layout/act_main_proxmark3_rdv4_rrg.xml
index f9a0d9b1..05ebe367 100644
--- a/app_main/src/main/res/layout/act_main_proxmark3_rdv4_rrg.xml
+++ b/app_main/src/main/res/layout/act_main_proxmark3_rdv4_rrg.xml
@@ -6,14 +6,6 @@
android:gravity="center|top"
android:orientation="vertical">
-
-
diff --git a/app_main/src/main/res/layout/item_act_guide_banner1.xml b/app_main/src/main/res/layout/item_act_guide_banner1.xml
index 6c102191..7aa7bf9c 100644
--- a/app_main/src/main/res/layout/item_act_guide_banner1.xml
+++ b/app_main/src/main/res/layout/item_act_guide_banner1.xml
@@ -2,8 +2,8 @@
+ android:orientation="vertical"
+ android:padding="16dp">
-
+ android:layout_marginEnd="16dp"
+ android:src="@drawable/ic_keyboard_arrow_left_grey_24dp" />
-
+ android:text="@string/slide_to_next_page" />
diff --git a/app_main/src/main/res/values-en/strings.xml b/app_main/src/main/res/values-en/strings.xml
index 247ed40c..8d076064 100644
--- a/app_main/src/main/res/values-en/strings.xml
+++ b/app_main/src/main/res/values-en/strings.xml
@@ -268,5 +268,7 @@
We found that your card is fully encrypted, so the MFOC half plus test can\'t continue. Is it allowed for us to request the mfcuk full plus test to detect a valid key?
We found possible valid data. Do we need to jump to dump editor to display this data?
List
+ Share
+ Some permission requests failed.
\ No newline at end of file
diff --git a/app_main/src/main/res/values-zh/strings.xml b/app_main/src/main/res/values-zh/strings.xml
index 66851ee1..7c259f3f 100644
--- a/app_main/src/main/res/values-zh/strings.xml
+++ b/app_main/src/main/res/values-zh/strings.xml
@@ -264,5 +264,7 @@
我们发现您的卡片是全加密,因此mfoc半加测试无法继续进行,是否允许我们请求mfcuk全加测试探测一个有效密钥?
我们发现了可能有效的数据,需要我们跳转到Dump编辑器显示这个数据么?
列表
+ 共享
+ 部分权限请求失败。
\ No newline at end of file
diff --git a/app_main/src/main/res/values/strings.xml b/app_main/src/main/res/values/strings.xml
index 43169d66..c12bd42c 100644
--- a/app_main/src/main/res/values/strings.xml
+++ b/app_main/src/main/res/values/strings.xml
@@ -267,5 +267,7 @@
We found that your card is fully encrypted, so the MFOC half plus test can\'t continue. Is it allowed for us to request the mfcuk full plus test to detect a valid key?
We found possible valid data. Do we need to jump to dump editor to display this data?
List
+ Share
+ Some permission requests failed.
\ No newline at end of file
diff --git a/app_main/src/main/res/values/styles.xml b/app_main/src/main/res/values/styles.xml
index a8239739..f112bf59 100644
--- a/app_main/src/main/res/values/styles.xml
+++ b/app_main/src/main/res/values/styles.xml
@@ -23,4 +23,13 @@
- @color/md_white_1000
+
+
\ No newline at end of file
diff --git a/pm3rdv4rrg/src/main/cpp b/pm3rdv4rrg/src/main/cpp
index 6c87d1ed..b25ab811 160000
--- a/pm3rdv4rrg/src/main/cpp
+++ b/pm3rdv4rrg/src/main/cpp
@@ -1 +1 @@
-Subproject commit 6c87d1ed764cde100e2fa7b3599545a17fe595fd
+Subproject commit b25ab811b51cdb0b4c3ec6f8e4210969fdbddd0f
diff --git a/utils/src/main/res/layout/double_input_dialog.xml b/utils/src/main/res/layout/double_input_dialog.xml
index f250eb6c..41b44f4e 100644
--- a/utils/src/main/res/layout/double_input_dialog.xml
+++ b/utils/src/main/res/layout/double_input_dialog.xml
@@ -111,8 +111,7 @@
android:layout_weight="1"
android:background="@color/md_white_1000"
android:text="@string/save"
- android:textAllCaps="false"
- android:textColor="@color/colorPrimary" />
+ android:textAllCaps="false" />