与其他十几个线程一样,我正尝试通过uri在使用Android Studio的设备上直接进行调试。但是我似乎找不到使用“编辑配置”从Android Studio进行操作的确切示例。确定简单的东西我不见了...
这是我在做什么:
这是AndroidManifest.xml中的意图:
<activity
android:name="com.mayapp.StartActivity"
android:configChanges="orientation|keyboardHidden|screenSize|keyboard|navigation"
android:label="StartActivity"
android:launchMode="singleTask"
android:windowSoftInputMode="stateHidden" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme=myapp" />
</intent-filter>
</activity>
当我尝试调试时出现以下错误:
为文本:
11/21 13:15:05: Launching MyApp
Launching deeplink: myapp%3A%2F%2Fdispatch.
$ adb shell setprop log.tag.AppIndexApi VERBOSE
$ adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d myapp%3A%2F%2Fdispatch -D
Error while executing: am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d myapp%3A%2F%2Fdispatch -D
Starting: Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=myapp://dispatch }
Error: Activity not started, unable to resolve Intent act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=myapp://dispatch flg=0x10000000
Error while Launching URL
答案 0 :(得分:0)
因此,看来我的工作有几个问题。有趣的是,大约4年前配置的AndroidManifest.xml似乎可以正常工作,但是要在Android Studio中运行,不仅需要指定scheme
,还需要在其中指定home
目的。就我而言,我有多个与同一个scheme
相关联的动作,因此答案是在同一个intent
中有多个数据段。我找不到关于它的任何Android文档,但是我可能会错过它。因此,对于将来可能遇到此问题的任何人,这就是我所做的:
像我一样在AndroidManifest.XML中定义intent
,但还要确保也有一个home
。显然,您希望应用程序在打开时会执行的操作可能有所不同,这方面似乎有很多信息,因此在此不做介绍。对于您要触发的每个操作,请添加一个新的data
部分:
<activity
android:name="com.myapp.StartActivity"
android:configChanges="orientation|keyboardHidden|screenSize|keyboard|navigation"
android:label="StartActivity"
android:launchMode="singleTask"
android:windowSoftInputMode="stateHidden" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp" android:host="anondispatch"/>
<data android:scheme="myapp" android:host="dispatch"/>
<data android:scheme="myapp" android:host="openform"/>
<data android:scheme="myapp" android:host="opendispatch"/>
</intent-filter>
</activity>
在代码中,您可以在指定的onIntent()
中的activity
方法中找到开头(在我的示例中为StartActivity
)。这是解析所需元素的代码示例:
受保护的void onNewIntent(Intent intent){ super.onNewIntent(intent); setIntent(intent); Intent intent = getIntent(); 如果(intent.getAction()!= null){ 如果(Intent.ACTION_VIEW.equals(intent.getAction())){ Uri uri = intent.getData(); 字符串主机= uri.getHost(); ` 字符串uriStr = uri.toString(); 如果(host.equalsIgnoreCase(“ anondispatch”)){ //解析出您想要的 } 否则,如果(host.equalsIgnoreCase(“ opendispatch”)){ //解析出您想要的 } 否则,如果(host.equalsIgnoreCase(“ openform”)){ //解析出您想要的 } 否则,如果(host.equalsIgnoreCase(“ dispatch)){ //解析出您想要的 } } } } }
从“编辑配置”更新配置,以便调试器可以使用以下命令通过USB在远程设备上运行: