setOnClickFillInIntent 错误处理

setOnClickFillInIntent Error Handling

我制作了一个带有集合视图的 appWidget。为了处理集合视图的每个视图上的点击事件,我使用了 'setPendingIntentTemplate' 和 'setOnClickFillInIntent'。它在正常情况下工作正常。它通过在点击时发送意图来打开目标 activity。但是,如果将无效的 uri(对于目标 activity 而言,它不是有效的 uri,但在语法上,它是一个有效的 uri。)被注入到它的意图中,则小部件只是简单地不处理点击事件。它不会引发任何异常或 return 任何错误。

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(link);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
view.setOnClickFillInIntent(R.id.image, intent);

有什么方法可以捕获此错误(由于 intent 的 uri 无效,因此未处理点击事件)? - 这样,我就可以切换到不同的代码来处理这种情况。

我从另一个论坛上找到了这个问题的解决方案,我也发布了同样的问题。

基本上,无法对已经执行的Intent 进行异常处理。

但是,在添加 PendingIntent

之前,有一种方法可以检查意图的目标组件(activity、服务或接收器)是否存在
getPackageManager().queryIntentActivities( intent, flags )

如果这个returns是一个空数组,那就意味着没有activity可以被intent执行。通过这个方法可以判断是否添加PendingIntent。