HarmonyOS 鸿蒙Next 启动另一个app中的uiAbility,崩溃

HarmonyOS 鸿蒙Next 启动另一个app中的uiAbility,崩溃 模拟器中安装两个APP,一个APP1 一个APP2

现在从APP1点击一个按钮,准备启动APP2中的ability,代码执行后,直接crash。

crash 日志:

1-15 14:24:33.393 7713-7721/? I m/.liuwei.learn: jit_compiled:[OK] java.lang.AbstractStringBuilder java.lang.AbstractStringBuilder.append(int) @ /apex/com.android.art/javalib/core-oj.jar
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: FATAL EXCEPTION: main
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: Process: com.liuwei.learn1, PID: 7713
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: java.lang.SecurityException: Permission Denial: starting Intent { pkg=com.liuwei.newapp cmp=com.liuwei.newapp/EntryAbility (has extras) } from ProcessRecord{5890136 7713:com.liuwei.learn1/u0a61} (pid=7713, uid=10061) not exported from uid 10075
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.os.Parcel.createExceptionOrNull(Parcel.java:2443)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.os.Parcel.createException(Parcel.java:2427)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.os.Parcel.readException(Parcel.java:2410)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.os.Parcel.readException(Parcel.java:2352)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:2401)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.app.Instrumentation.execStartActivity(Instrumentation.java:1776)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.app.Activity.startActivityForResult(Activity.java:5656)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.app.Activity.startActivity(Activity.java:6074)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at com.huawei.android.template.ActivityCallbackHandler.handleStartActivity(ActivityCallbackHandler.java:85)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at com.huawei.android.template.ActivityCallbackHandler.handleMessage(ActivityCallbackHandler.java:65)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:117)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:205)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:293)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.app.ActivityThread.loopProcess(ActivityThread.java:9824)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:9813)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1201)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: Caused by: android.os.RemoteException: Remote stack trace:
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1252)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1382)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:873)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1417)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: 	at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1389)
11-15 14:24:33.394 7713-7713/? E AndroidRuntime: callee: null 3245/17752

APP2 内的相关新消息:

"bundleName": "com.liuwei.newapp",
"name": "entry",
"name": "EntryAbility",

APP1中的启动代码:

async gotoOuterApp(){
    try {
      let want: Want = {
        bundleName: "com.liuwei.newapp",
        moduleName: "entry",
        abilityName: "EntryAbility",
      }
      let context = getContext(this) as common.UIAbilityContext;
      await context.startAbility(want)
      console.info("start ability succeed")
    } catch (err){
      console.info(`start ability failed with ${err} `)
    }
  }

更多关于HarmonyOS 鸿蒙Next 启动另一个app中的uiAbility,崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

开发者你好,应用程序试图启动一个不被允许的Activity,导致权限拒绝异常。需要检查应用程序的权限设置,确保启动Activity的应用程序具有正确的权限。

更多关于HarmonyOS 鸿蒙Next 启动另一个app中的uiAbility,崩溃的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


被调用的ability的被调用权限是打开状态的

“exported”: true,

依然会报权限错误,

解决了没,和你的问题一模一样

02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/: Process: com.example.myapplication, PID: 4255
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/: java.lang.SecurityException: Permission Denial: starting Intent { pkg=com.example.myapplication2 cmp=com.example.myapplication2/EntryAbility (has extras) } from ProcessRecord{dd05299 4255:com.example.myapplication/u0a74} (pid=4255, uid=10074)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.os.Parcel.createExceptionOrNull(Parcel.java:2443)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.os.Parcel.createException(Parcel.java:2427)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.os.Parcel.readException(Parcel.java:2410)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.os.Parcel.readException(Parcel.java:2352)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:2401)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1776)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.app.Activity.startActivityForResult(Activity.java:5656)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.app.Activity.startActivity(Activity.java:6074)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at com.huawei.android.template.ActivityCallbackHandler.handleStartActivity(ActivityCallbackHandler.java:85)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at com.huawei.android.template.ActivityCallbackHandler.handleMessage(ActivityCallbackHandler.java:65)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.os.Handler.dispatchMessage(Handler.java:117)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.os.Looper.loopOnce(Looper.java:205)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.os.Looper.loop(Looper.java:293)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.app.ActivityThread.loopProcess(ActivityThread.java:9824)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at android.app.ActivityThread.main(ActivityThread.java:9813)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at java.lang.reflect.Method.invoke(Native Method)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1201)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/: Caused by: android.os.RemoteException: Remote stack trace:
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1252)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1382)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:873)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1417)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/:  at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1389)
02-19 15:46:16.806 4255-4255/com.example.myapplication E AndroidRuntime/: callee: null 3919/10442,

在HarmonyOS鸿蒙Next中,启动另一个应用中的UIAbility时,如果遇到崩溃问题,可能的原因包括以下几个方面:

  1. 权限问题:启动其他应用的UIAbility需要确保目标应用已授予相关权限,如ohos.permission.START_ABILITIES。如果权限未正确配置,系统会拒绝启动请求,导致崩溃。

  2. 目标UIAbility未正确配置:目标应用的UIAbility必须在config.json中正确声明,并且exported属性应设置为true,否则无法被其他应用调用。

  3. 跨应用通信限制:鸿蒙系统对跨应用通信有严格限制。如果目标UIAbility未明确支持跨应用启动,或未使用want正确传递参数,可能会导致崩溃。

  4. 目标应用未安装或未启动:如果目标应用未安装或未启动,系统无法找到对应的UIAbility,从而导致崩溃。

  5. 版本兼容性:鸿蒙Next可能对某些API或行为进行了调整,如果目标应用的UIAbility未适配新版本,可能会导致崩溃。

  6. 参数传递错误:在启动UIAbility时,如果传递的want参数不符合目标应用的要求,可能会导致目标应用无法正确处理请求,进而崩溃。

  7. 系统资源限制:在某些情况下,系统资源不足可能导致启动UIAbility时崩溃。

解决这些问题需要检查权限配置、config.json声明、want参数传递等,并确保目标应用已正确安装和启动。如果问题仍然存在,可以进一步分析日志以定位具体原因。

回到顶部