我正在开发一个Android应用程序,用于侦听包含带有一些数据的包的特定意图。我想使用adb向我的应用发送一个意图。我尝试过:
adb shell am startservice -a com.INTENT_NAME -e myBundleName myBundleData com.pkg/com.pkg.cls
但我的应用程序将其识别为字符串列表而不是捆绑包。有谁知道如何使用am应用程序发送包的意图?不幸的是,文档只说发送字符串或数字列表,而不是关于bundle。
答案 0 :(得分:7)
根据source code am
无法接受bundle
类型的输入数据
<强>更新强>
在Android 7.0中,将代码has been moved从Am.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);
}
});