startActivity启动外部指定包名下面的activity导致自己的app挂掉

SKATE11 2020-05-11 12:40:06
startActivity启动外部指定包名下面的activity导致自己的app挂掉,无法扑捉到异常,怎样处理呢?
如:

ComponentName componetName = new ComponentName(“com.android.settings”, com.android.settings.WifiSetupActivity);
try
{
Intent intent = new Intent();
intent.setComponent(componetName);
startActivity(intent);
}
catch (Exception e)
{
e.printStackTrace();
}

这里由于WifiSetupActivity的onCreate里面有些参数没get到抛出异常,我的这段代码无法扑捉到异常,导致我的activity挂掉,怎样扑捉这种异常呢,我不想自己的app挂掉。
...全文
681 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
王能 2020-05-21
  • 打赏
  • 举报
回复
引用 12 楼 SKATE11 的回复:
谢谢 虽然这个解决方法不算完美 还是会给用户看到新开进程奔溃的提示框 但是也没有其他办法了
嗯,最好是自己先判断,这样就友好多了。 顺便提一下,新进程也不会崩溃...。崩溃的其实是系统设置进程,理论上不会影响自己。但单进程情况下会导致自己崩溃,多进程完全没影响...我也不知道为什么。
SKATE11 2020-05-20
  • 打赏
  • 举报
回复
引用 10 楼 王能 的回复:
引用 7 楼 SKATE11 的回复:
[quote=引用 4 楼 王能 的回复:] 实在不知道你想干嘛,但你可以开启一个新的进程调用startActivity,这样app就不会挂掉
怎样实现呢 我感觉你说的这个应该可行
写个新的Activity,如TestActivity,在manifest里加上进程号

<activity android:name=".TestActivity"
    android:process=":testprocess"/>
你的TestActivity里就一句逻辑,跳到WifiSetupActivity就行了。 跳转时会提示app崩溃(有些手机会提示),但只是这个进程崩溃了,原进程不受影响[/quote] 谢谢 虽然这个解决方法不算完美 还是会给用户看到新开进程奔溃的提示框 但是也没有其他办法了
SKATE11 2020-05-20
  • 打赏
  • 举报
回复
引用 9 楼 cocoabird 的回复:
引用 8 楼 SKATE11 的回复:
[quote=引用 6 楼 cocoabird 的回复:] WifiSetupActivity是系统的,你没传参进去说明是打开不了的,也就是startActivity失败,为什么会导致你的app挂掉呢?
会挂掉的 必现 activity里面跑出来的异常 调用startactivity的地方 没法捕获,立即挂掉。
log发下[/quote] Log 就不发了 主要是我没传intent参数进去抛出异常 没法捕获 程序挂掉 我想解决的是在没有正确传入参数的情况下程序不会挂掉 问题就是捕获不到这个异常
王能 2020-05-19
  • 打赏
  • 举报
回复
引用 7 楼 SKATE11 的回复:
引用 4 楼 王能 的回复:
实在不知道你想干嘛,但你可以开启一个新的进程调用startActivity,这样app就不会挂掉
怎样实现呢 我感觉你说的这个应该可行
写个新的Activity,如TestActivity,在manifest里加上进程号

<activity android:name=".TestActivity"
    android:process=":testprocess"/>
你的TestActivity里就一句逻辑,跳到WifiSetupActivity就行了。 跳转时会提示app崩溃(有些手机会提示),但只是这个进程崩溃了,原进程不受影响
cocoabird 2020-05-19
  • 打赏
  • 举报
回复
引用 8 楼 SKATE11 的回复:
引用 6 楼 cocoabird 的回复:
WifiSetupActivity是系统的,你没传参进去说明是打开不了的,也就是startActivity失败,为什么会导致你的app挂掉呢?
会挂掉的 必现 activity里面跑出来的异常 调用startactivity的地方 没法捕获,立即挂掉。
log发下
SKATE11 2020-05-18
  • 打赏
  • 举报
回复
引用 6 楼 cocoabird 的回复:
WifiSetupActivity是系统的,你没传参进去说明是打开不了的,也就是startActivity失败,为什么会导致你的app挂掉呢?
会挂掉的 必现 activity里面跑出来的异常 调用startactivity的地方 没法捕获,立即挂掉。
SKATE11 2020-05-18
  • 打赏
  • 举报
回复
引用 4 楼 王能 的回复:
实在不知道你想干嘛,但你可以开启一个新的进程调用startActivity,这样app就不会挂掉
怎样实现呢 我感觉你说的这个应该可行
cocoabird 2020-05-14
  • 打赏
  • 举报
回复
WifiSetupActivity是系统的,你没传参进去说明是打开不了的,也就是startActivity失败,为什么会导致你的app挂掉呢?
王能 2020-05-13
  • 打赏
  • 举报
回复
这种跳转肯定要进行非空判断才能跳的,想不通你在干嘛
王能 2020-05-13
  • 打赏
  • 举报
回复
实在不知道你想干嘛,但你可以开启一个新的进程调用startActivity,这样app就不会挂掉
SKATE11 2020-05-13
  • 打赏
  • 举报
回复
引用 2 楼 cocoabird 的回复:
打开方式不对,系统级的界面一般很稳定的
不是 有些参数我没传进去 我不想传 只想铺货异常
cocoabird 2020-05-12
  • 打赏
  • 举报
回复
打开方式不对,系统级的界面一般很稳定的
le540850072 初级 2020-05-11
  • 打赏
  • 举报
回复
有时候我也发现,明明写了try catch的但是还是会处理不到内部的一些异常;我在想是不是因为内部因为特殊原因出现了异常但是没有主动抛出异常,所以我们外部就没法捕捉异常。就会出现崩溃。比如方法内部执行命令: a / b , 但是特殊情况下b为0,就导致了崩溃。

80,360

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧