From 24e81ccf2384867ad8b159d8b3bca91c2bd3f236 Mon Sep 17 00:00:00 2001 From: TQCasey <494294315@qq.com> Date: Mon, 26 Jan 2026 18:00:14 +0800 Subject: [PATCH] fix rn-auto --- .../src/main/java/com/rnbot/RNBotModule.java | 35 +++++++++++++++++++ src/index.ts | 6 ++++ 2 files changed, 41 insertions(+) diff --git a/android/src/main/java/com/rnbot/RNBotModule.java b/android/src/main/java/com/rnbot/RNBotModule.java index d474ca9..1dc3c8d 100644 --- a/android/src/main/java/com/rnbot/RNBotModule.java +++ b/android/src/main/java/com/rnbot/RNBotModule.java @@ -2,6 +2,7 @@ package com.rnbot; import android.app.Activity; import android.content.Intent; +import android.content.pm.PackageManager; import android.provider.Settings; import android.view.accessibility.AccessibilityNodeInfo; import android.accessibilityservice.AccessibilityService; @@ -149,6 +150,40 @@ public class RNBotModule extends ReactContextBaseJavaModule { } } + @ReactMethod + public void openApp(String packageName, String activityName, Promise promise) { + try { + Activity activity = getCurrentActivity(); + if (activity == null) { + promise.reject("NO_ACTIVITY", "Activity is null"); + return; + } + + PackageManager pm = activity.getPackageManager(); + Intent intent; + + if (activityName != null && !activityName.isEmpty()) { + // 指定 Activity + intent = new Intent(); + intent.setClassName(packageName, activityName); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); + } else { + // 只指定包名,启动主 Activity + intent = pm.getLaunchIntentForPackage(packageName); + if (intent == null) { + promise.reject("APP_NOT_FOUND", "应用未安装: " + packageName); + return; + } + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); + } + + activity.startActivity(intent); + promise.resolve(true); + } catch (Exception e) { + promise.reject("ERROR", e.getMessage()); + } + } + private WritableMap nodeToMap(AccessibilityNodeInfo node) { WritableMap map = new WritableNativeMap(); diff --git a/src/index.ts b/src/index.ts index 6819f52..76f32f4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -107,6 +107,12 @@ class RNAuto { return await RNBotModule.recents(); } + /** 打开应用 */ + async openApp(packageName: string, activityName?: string): Promise { + if (!this.checkAndroid()) return false; + return await RNBotModule.openApp(packageName, activityName || ''); + } + /** 延迟 */ delay(ms: number): Promise { return new Promise(resolve => setTimeout(resolve, ms));