Android 从意图中捕获数据

Android capture data from intent

我有一个应用程序可以将意图发送到确切的应用程序。我有 root shell 访问权限,可以修改 AOSP,但我真的不知道去哪里查看。

在 logcat 中得到了这个:

START u0 {act=com.app.Action.OPEN cmp=com.app/.SomeActivity (has extras)} from uid 10052

如何捕捉这个(has extras)?或者至少在意图中使用的键(不是值),因为我的主要目标是使用参数(具有 root 访问权限)启动外部应用程序 activity,但它是封闭源代码,我不知道额外的字符串键是多少命名。

为了澄清这个问题,我应该说 intent 是从应用程序自身调用的,我没有这个应用程序的来源。

获取意图数据的一种可能方法是创建一个具有完全相同的包名称和设置的意图过滤器的包,然后用假包替换原始包,作为新的意图接收器。只有这样才能使用此 answer 中提供的解决方案 - 因为除非收到意图,否则没有什么可列出的。


虽然能够从源代码构建 AOSP,但您仍然可以编辑 class Intent 并添加更多日志记录。 Uri mData 似乎是您要查找的数据; line 6130 中的一个构造函数似乎是最常用的构造函数:

Intent(String action, Uri uri, Context packageContext, Class<?> cls)

因此应该可以从该构造函数中登录(if 条件是可选的):

public Intent(String action, Uri uri, Context packageContext, Class<?> cls) {

    setAction(action);
    mData = uri;
    mComponent = new ComponentName(packageContext, cls);

    if(cls.getSimpleName().equals("SomeActivity")) {
        Log.d("Intent", "has leaked: " + action + ": " + uri.toString());
    }
}