使用控制台使用bundle发送intent

时间:2014-05-06 13:55:30

标签: android android-intent console bundle adb

我正在开发一个Android应用程序,用于侦听包含带有一些数据的包的特定意图。我想使用adb向我的应用发送一个意图。我尝试过:

adb shell am startservice -a com.INTENT_NAME -e myBundleName myBundleData com.pkg/com.pkg.cls

但我的应用程序将其识别为字符串列表而不是捆绑包。有谁知道如何使用am应用程序发送包的意图?不幸的是,文档只说发送字符串或数字列表,而不是关于bundle。

2 个答案:

答案 0 :(得分:7)

根据source code am无法接受bundle类型的输入数据

<强>更新 在Android 7.0中,将代码has been movedAm.java解析为Intent.java并支持更多数据类型(如基本类型的Array[]ArrayList<>)的意图参数已经过添加。遗憾的是,Bundle命令中仍然不支持am类型附加功能。

答案 1 :(得分:0)

我遇到了同样的问题,试图在收到Facebook App Invite之后假装你刚刚安装了应用程序的情况。无法使shell工作,最终构建了一个非常简单的测试装备,它有一个按钮和处理程序代码,如:

    Button button  = (Button)findViewById(R.id.trigger_button);
    button.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            Intent intent = new Intent();
            intent.setAction("android.intent.action.VIEW");
            intent.setData(Uri.parse("myapp://fb-app-invite"));

            Bundle bundle = new Bundle();
            bundle.putString("target_url", "myapp://fb-app-invite?fromuser=673");
            intent.putExtra("al_applink_data", bundle);

            MainActivity.this.startActivity(intent);
        }
    });