From fda5a280aa164e8b4cdfa57e1bf8ad61c5aab682 Mon Sep 17 00:00:00 2001 From: w2016561536 Date: Sat, 27 Nov 2021 21:26:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=AE=89=E5=8D=9311=E7=9A=84?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit solve permission problems on Android 11 --- README.md | 2 +- README_en.md | 2 +- README_tc.md | 2 +- app/build.gradle | 6 +-- app/release/app-release.apk | Bin 85093 -> 68684 bytes app/release/output-metadata.json | 4 +- .../main/java/com/example/vcam/HookMain.java | 39 +++++++++++------- 7 files changed, 33 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index efdaad4..6d54f0d 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Q1. 大多数情况下,替换前置摄像头的视频需要水平翻转并右旋 Q2. 画面黑屏,相机启动失败? -A2. 目前有些应用并不能成功替换(特别是系统相机)。或者是因为视频路径不对。 +A2. 目前有些应用并不能成功替换(特别是系统相机)。或者是因为视频路径不对(是否创建了两级Camera1目录,如`./DCIM/Camera1/Camera1/virtual.mp4`,但只需要一级目录)。 Q3. 画面花屏? diff --git a/README_en.md b/README_en.md index b3f754b..652ad69 100644 --- a/README_en.md +++ b/README_en.md @@ -34,7 +34,7 @@ Q1. The problems of front camera? A1. In most cases , the video for replacing front camera need to be flipped horizontally and rotated right 90 degrees. The video's resolution **after being processed** need to same with that in toast message. But in some came, it doesn't need to make adjustment, so you need to judge it according to situation. Q2. Black screen ? Open camera fail ? -A2. Till now ,there are a few apps that can't be hooked, especially the system camera. Or it caused by wrong `Camera1` directory. +A2. Till now ,there are a few apps that can't be hooked, especially the system camera. Or it caused by wrong `Camera1` directory(Whether two levels of Camera1 directory were created, like `./DCIM/Camera1/Camera1/virtual.mp4`, only one level is needed). Q3. Blurred screen? A3. The resolution of video is wrong. diff --git a/README_tc.md b/README_tc.md index e28608d..5361396 100644 --- a/README_tc.md +++ b/README_tc.md @@ -34,7 +34,7 @@ A1. 前置攝影機方向問題? Q1.大多數情况下,替換前置攝影機的影片需要水准翻轉並右旋90度,並且影片***處理後***的解析度應與氣泡消息內解析度相同。 但有時這並不需要,具體請根據實際情況判斷。 Q2. 畫面黑屏,相機啟動失敗? -A2. 現時有些應用並不能成功替換(特別是系統相機)。 或者是因為影片路徑不對。 +A2. 現時有些應用並不能成功替換(特別是系統相機)。 或者是因為影片路徑不對(是否創建了兩級Camera1目錄,如`./DCIM/Camera1/Camera1/virtual.mp4`,但只需要一級目錄)。 Q3. 畫面花屏? A3. 影片解析度不對。 diff --git a/app/build.gradle b/app/build.gradle index b0dce34..5b921dc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,9 +8,9 @@ android { defaultConfig { applicationId "com.example.vcam" minSdk 21 - targetSdk 28 - versionCode 18 - versionName "3.5" + targetSdk 29 + versionCode 19 + versionName "3.6" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/app/release/app-release.apk b/app/release/app-release.apk index e9da87d1d687052dc5f971875299d4ac16590a6f..40f227264fd936a0279196ab148e6cdbb6e60d46 100644 GIT binary patch delta 20248 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%0ACHIfg1U(yt+k<>{?wf=vjlIGFll4jGlBwbEV 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 Or~?wFNTL8;D*ppid1v$h delta 20155 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 Build.VERSION_CODES.M) { - int auth_statue = PackageManager.PERMISSION_DENIED; try { - auth_statue = toast_content.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE); - }catch (Exception eee){ + auth_statue += (toast_content.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) + 1); + } catch (Exception ignored) { } try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - auth_statue = toast_content.checkSelfPermission(Manifest.permission.MANAGE_EXTERNAL_STORAGE); + auth_statue += (toast_content.checkSelfPermission(Manifest.permission.MANAGE_EXTERNAL_STORAGE) + 1); } - }catch (Exception eee){ + } catch (Exception ignored) { } - if ( auth_statue != PackageManager.PERMISSION_GRANTED){ - File shown_file = new File(Environment.getExternalStorageDirectory()+"/Android/data/"+lpparam.packageName+"/files/Camera1/" + "has_shown.jpg"); + }else { + File DCIM_dic = new File(Environment.getExternalStorageDirectory() + "/DCIM/"); + if ((!DCIM_dic.canRead()) && auth_statue < 1){ + auth_statue = -1; + } + } + if ( auth_statue < 1 ){ + File shown_file = new File(toast_content.getExternalFilesDir(null).getAbsolutePath() + "/Camera1/"); + if ((!shown_file.isDirectory()) && shown_file.exists()){ + shown_file.delete(); + } + if (!shown_file.exists()){ + shown_file.mkdir(); + } + shown_file = new File(toast_content.getExternalFilesDir(null).getAbsolutePath() + "/Camera1/"+ "has_shown"); if (!(lpparam.packageName.equals(BuildConfig.APPLICATION_ID) || shown_file.exists())) { - Toast.makeText(toast_content, "未授予读取本地目录权限,请检查权限\nCamera1目前重定向为 " + Environment.getExternalStorageDirectory() + "/Android/data/" + lpparam.packageName + "/files/Camera1/", Toast.LENGTH_LONG).show(); - String path = Environment.getExternalStorageDirectory()+"/Android/data/"+lpparam.packageName+"/files/Camera1/" ; + Toast.makeText(toast_content, "未授予读取本地目录权限,请检查权限\nCamera1目前重定向为 " + toast_content.getExternalFilesDir(null).getAbsolutePath() + "/Camera1/", Toast.LENGTH_LONG).show(); try { - FileOutputStream fos = new FileOutputStream(path+ "has_shown.jpg"); + FileOutputStream fos = new FileOutputStream(toast_content.getExternalFilesDir(null).getAbsolutePath() + "/Camera1/" + "has_shown"); String info = "shown"; fos.write(info.getBytes()); fos.flush(); @@ -304,13 +316,12 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable { XposedBridge.log("【VCAM】"+ e.toString()); } } - video_path = Environment.getExternalStorageDirectory()+"/Android/data/"+lpparam.packageName+"/files/Camera1/"; + video_path = toast_content.getExternalFilesDir(null).getAbsolutePath() + "/Camera1/"; }else { video_path = Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera1/"; } - }else { - video_path = Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera1/"; - } + }else { + video_path = Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera1/"; } } }