我很难弄清楚这里有什么问题。我有一个带有这个意图过滤器的活动:
<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="launcher"
android:host="custo"
/>
</intent-filter>
我通过执行来成功启动我的活动(路径和参数在代码中进一步处理):
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("launcher://custo/3dw?iuid=06eec76c-f48e-4961-870e-4b27495f8201"));
但是这个不起作用:
Uri uri = new Uri.Builder().scheme("launcher").appendEncodedPath("/custo").appendPath("3dw").appendQueryParameter("iuid", "f6f18a3d-14f9-4969-8a24-8130f4cad5d1").build();
context.startActivity(new Intent(Intent.ACTION_VIEW, uri);
错误是:
无法以意图启动活动“act = ... action.VIEW dat =”launcher:// custo / 3dw?iuid = 06eec76c-f48e-4961-870e-4b27495f8201“(这是我解析的字符串相同)。
怎么了?
答案 0 :(得分:1)
在第二个示例中,您的Uri
缺少框架必须查找的authority
。它起初看起来像一个有效的Uri
,但是您提供了一条路径,使您的Uri
看起来像下面的那样(注意方案之后缺少/
),而不是授予权限。 :
启动器:/?丘斯托/ 3DW IUID = f6f18a3d-14f9-4969-8a24-8130f4cad5d1
你的陈述应该是:
new Uri.Builder()
.scheme("launcher")
.authority("custo")
.appendPath("3dw")
.appendQueryParameter("iuid", "f6f18a3d-14f9-4969-8a24-8130f4cad5d1")
.build();