MCPcopy
hub / github.com/IPADS-SAI/MobiAgent / appStart

Method appStart

app/app/src/main/java/com/mobi/agent/monitoru2.java:133–171  ·  view source on GitHub ↗

启动指定包名的应用(增强版 - 处理特殊应用) @param context 上下文对象 @param packageName 应用包名 @throws Exception 启动失败时抛出异常,成功时返回成功信息

(Context context, String packageName)

Source from the content-addressed store, hash-verified

131 * @throws Exception 启动失败时抛出异常,成功时返回成功信息
132 */
133 public static void appStart(Context context, String packageName) throws Exception {
134 Log.d("monitoru2", "增强版启动应用: " + packageName);
135
136 try {
137 PackageManager packageManager = context.getPackageManager();
138
139 // 方法2: 直接组件启动(模拟 ADB 方式)
140 try {
141 String activityName = getMainActivityName(packageName);
142 if (activityName != null) {
143 Intent intent = new Intent(Intent.ACTION_MAIN);
144 intent.addCategory(Intent.CATEGORY_LAUNCHER);
145 intent.setComponent(new ComponentName(packageName, activityName));
146 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
147 context.startActivity(intent);
148 Log.d("monitoru2", "SUCCESS: 直接组件启动成功 - " + packageName);
149 throw new Exception("SUCCESS: 应用启动成功 - " + packageName);
150 }
151 } catch (Exception e) {
152 if (e.getMessage() != null && e.getMessage().startsWith("SUCCESS:")) {
153 throw e;
154 }
155 Log.d("monitoru2", "直接组件启动失败: " + e.getMessage());
156 }
157
158
159
160 // 所有方法都失败
161 throw new Exception("❌ 所有启动方式都失败,应用可能不支持外部启动: " + packageName);
162
163 } catch (Exception e) {
164 if (e.getMessage() != null && e.getMessage().startsWith("SUCCESS:")) {
165 throw e;
166 }
167
168 Log.e("monitoru2", "启动应用失败: " + packageName + ", 错误: " + e.getMessage());
169 throw new Exception("启动应用失败: " + e.getMessage());
170 }
171 }
172
173 /**
174 * 获取应用的主Activity名称

Callers 1

Calls 2

getMainActivityNameMethod · 0.95
getMessageMethod · 0.80

Tested by

no test coverage detected