From e02997db52ee9a4fda4d88381c284e19ca4a56d2 Mon Sep 17 00:00:00 2001 From: LukeMackin Date: Sun, 19 Jul 2026 20:55:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=89=E8=A3=85=E6=9D=83=E9=99=90?= =?UTF-8?q?=E4=B8=8D=E8=B6=B3=E6=97=B6=E8=87=AA=E5=8A=A8=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=AE=BE=E7=BD=AE=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executionHistory/executionHistory.bin | Bin 956985 -> 956985 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .../.gradle/8.10.2/fileHashes/fileHashes.bin | Bin 68815 -> 68815 bytes .../.gradle/8.10.2/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.10.2/fileHashes/resourceHashesCache.bin | Bin 19041 -> 19075 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .../android/.gradle/file-system.probe | Bin 8 -> 8 bytes .../main/java/dev/yuzu/gca/MainActivity.kt | 9 ++++++++- 8 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/client-android/android/.gradle/8.10.2/executionHistory/executionHistory.bin b/packages/client-android/android/.gradle/8.10.2/executionHistory/executionHistory.bin index 6b08e11bea39cc61e90a04990e06b1acb82d3be0..fd19717e0deb4a8cffd5399f8969e99371c22866 100644 GIT binary patch delta 2653 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 Rvo*z0IH`W>rshKx?|-{DZ?6CV diff --git a/packages/client-android/android/.gradle/8.10.2/fileHashes/fileHashes.lock b/packages/client-android/android/.gradle/8.10.2/fileHashes/fileHashes.lock index 8d2cbb7bea58c89abbd9cc38563b4710ec5ca055..c211efb0d4e6c3692766d297f9eb39e0728d94ec 100644 GIT binary patch literal 17 VcmZP;cbNQT33F5g0~oM;0{|&a1T_Ev literal 17 VcmZP;cbNQT33F5g0~oLz0stu)1OWg5 diff --git a/packages/client-android/android/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/packages/client-android/android/.gradle/8.10.2/fileHashes/resourceHashesCache.bin index 3bfc266b2728493b0f4f040497a40767148caab5..23a08ba6b6e8b599bbb47de0fdbf6655b44da9fa 100644 GIT binary patch delta 87 zcmaDjg|T@m;|3E6M#0Ud5*&;I-`y2ootii20|OX%B~CV#>}FiKQSpcPMuP&e&5j-l jOiIQ;IY}TE1YrT4S$(hA44(Wx9Ky;oH{M19C@2R2rHUBj delta 35 rcmZpk%J^^!;|3E6MuE+y5*&<^LnWITCvH^yA->U|Lu|97hXNA-)T|47 diff --git a/packages/client-android/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/packages/client-android/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 101eed28b63a88a1212977f2c411ade1c0200099..eeb602195b2e3ffa7416b1c635c312af9066595e 100644 GIT binary patch literal 17 UcmZQhQ5D(E8h+WD0Ss9D0U_rD82|tP literal 17 UcmZQhQ5D(E8h+WD0Ss6K0U@aZ+W-In diff --git a/packages/client-android/android/.gradle/file-system.probe b/packages/client-android/android/.gradle/file-system.probe index ecf1da7f7d014352ba0a5bd34da51a1a82aa121e..1e22e6d7adf2e5caeb3165c370e7dcf692e211b2 100644 GIT binary patch literal 8 PcmZQzV4Po7c>NUs2>b(0 literal 8 PcmZQzV4Po-VsQ)r2Xg{_ diff --git a/packages/client-android/android/app/src/main/java/dev/yuzu/gca/MainActivity.kt b/packages/client-android/android/app/src/main/java/dev/yuzu/gca/MainActivity.kt index 46f32d1..e448207 100644 --- a/packages/client-android/android/app/src/main/java/dev/yuzu/gca/MainActivity.kt +++ b/packages/client-android/android/app/src/main/java/dev/yuzu/gca/MainActivity.kt @@ -4,7 +4,9 @@ import android.app.PendingIntent import android.content.Intent import android.content.pm.PackageInstaller import android.graphics.Color +import android.net.Uri import android.os.Bundle +import android.provider.Settings import android.widget.Button import android.widget.LinearLayout import android.widget.ScrollView @@ -209,7 +211,12 @@ class MainActivity : AppCompatActivity() { private fun installApk(apkFile: File) { if (!packageManager.canRequestPackageInstalls()) { - throw SecurityException("需要允许安装未知应用权限") + val intent = Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).apply { + data = Uri.parse("package:$packageName") + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + startActivity(intent) + throw SecurityException("请开启安装未知应用权限后重试") } val packageInstaller = packageManager.packageInstaller val params = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)