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" />