如何在不使用包管理器的情况下获取启动器活动/意图(对于自包装)

时间:2017-07-08 10:01:47

标签: android android-intent

我有一个基本代码,在3个不同的包之间共享 我想获得当前包的启动器活动,这就是我今天所做的:

PackageManager pm = context.getPackageManager();
intent = pm.getLaunchIntentForPackage(context.getPackageName());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
flag = PendingIntent.FLAG_UPDATE_CURRENT;
return PendingIntent.getActivity(context, 0, intent, flag);

但是我收到了Caused by java.lang.RuntimeException: Package manager has died的崩溃报告 使用过的context属于应该运行的服务,但众所周知,由于系统要求,它总是可以停止。
我知道我可以捕获异常,但随后将缺少启动意图 我希望有一个更少的资源需要方法来获得自包的启动意图。

P.S。 另一种解决方案是使用每个包的主要活动初始化某种单线,但由于packageName在运行时已知,我想我可以避免实现它。

1 个答案:

答案 0 :(得分:0)

我可以尝试使用可以捕获包之间事件的广播接收器。 因此,您可以发送,存储您想要的任何数据,而不会发生死亡事件。