有没有办法判断PendingIntent
或IntentSender
是否会发起活动(而不是广播或服务)?
PendingIntent
具有isActivity()
功能,但标记为@hide
。
我尝试从here复制/粘贴代码,但无济于事。
答案 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} }}