有没有办法判断PendingIntent
或IntentSender
是否会启动活动(而不是广播或服务)?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/