有没有办法判断PendingIntentIntentSender是否会启动活动(而不是广播或服务)?
PendingIntent具有isActivity()功能,但它被标记为@hide
我试图从here复制/粘贴代码,但没有成功。

最佳答案

aPendingIntent只是对实际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()上调用(private)方法PendingIntent将生成对androidActivityManager的调用,询问PendingIntent的目标是否是Activity

关于android - 确定PendingIntent是否为 Activity ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48509725/

10-12 01:39