I\'m developing an Android app listening for specific intent containing a bundle with some data. I would like to send an intent to my app using adb. I have tried with:
According to the source code am
has no way of accepting input data of the bundle
type
Update:
In Android 7.0 the intent parameters parsing code has been moved from Am.java to Intent.java and support for more data types (like Array[]
and ArrayList<>
of basic types) has been added. Unfortunately there is still no support for the Bundle
type extras in am
command.
I was facing the same issue, trying to fake the situation where you've just installed an app after receiving a Facebook App Invite. Couldn't get the shell to work, ended up building a really simple test rig that had one button and handler code like:
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);
}
});
You can start it by using the following command: adb shell am startservice -a android.intent.action.MAIN -e "key" "value" -n com.example.test/.TestService Key and value should be your bundle values you want to send. TestService should be your ServiceName Add for your Service in androidmanifest.xml Snippet:
<service android:name=".TestService" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</service>