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



我有一个基本代码,在 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属于应该运行的服务,但众所周知,由于系统要求,它总是可以停止。
我知道我可以捕获异常,但随后启动意图将丢失。
我希望有一种更少的资源需要方法来获取自我包的启动意图。

附言 另一种解决方案是使用每个包的主活动初始化某种单调,但由于 packageName 在运行时是已知的,我想我可以避免实现这一点。

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

最新更新