确定PendingIntent是否为活动

时间:2018-01-29 20:49:38

标签: android android-activity android-pendingintent

有没有办法判断PendingIntentIntentSender是否会发起活动(而不是广播或服务)?

PendingIntent具有isActivity()功能,但标记为@hide

我尝试从here复制/粘贴代码,但无济于事。

1 个答案:

答案 0 :(得分:2)

PendingIntent只是对实际Intent的引用。 PendingIntent实际上并不包含任何数据,因此您无法查看它。实际的Intent由Android本身管理。遗憾的是,你无法获得你想要的信息。

注意:上述答案不正确。从Android 4.1开始,可以确定Intent包裹的PendingIntent是否会启动Activity

你可以使用反射这样做:

    PendingIntent pendingIntent = ... // This is the `PendingIntent`
    try {
        Method method = PendingIntent.class.getDeclaredMethod("isActivity");
        method.setAccessible(true);
        Boolean isActivity = m.invoke(pendingIntent);
        if (isActivity) {
            // PendingIntent will launch an Activity
        }
    } catch (Exception e) {
        // Problem using reflection
    }

在早于4.1的Android版本上,这将引发NoSuchMethodException

isActivity()上调用(私有)方法PendingIntent会生成对Android ActivityManager的调用,询问PendingIntent的目标是否为{{1} }}