Activity Schema Android中的特殊字符
Posted
技术标签:
【中文标题】Activity Schema Android中的特殊字符【英文标题】:Special Character in Activity Schema Android 【发布时间】:2016-12-03 10:51:09 【问题描述】:我为我的活动设置了一个意图过滤器来打开活动,同时打开一个 URL 被调用的活动。 URL 包含特殊字符,如问号和 & 符号我无法获取它,并且 android 不知道我的应用程序作为此请求的主机。 我使用 Unicode 和 html 实体来解决该问题仍未解决。
【问题讨论】:
你能举例说明你的 URL 是怎样的吗? http:www.example.com/index.php?page=share&type=album&id=34 为什么http:
后面没有斜杠 (//
)?我认为它应该看起来像 http://www.example.com/index.php?page=share&type=album&id=34
您能否提供清单中的意图过滤器以及如何使用此 URL 处理打开意图?
您的data
标记的host
属性中缺少www
。它应该是这样的:
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="www.example.com"
android:pathPrefix="/index.php"
android:scheme="http"/>
</intent-filter>
同样不要在pathPrefix
中包含参数,你可以在Activity代码中提取它们:
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Uri data = getIntent().getData();
if(data != null)
Log.d(TAG, "onCreate: " + data.toString());
Set<String> names = data.getQueryParameterNames();
for(String name : names)
Log.d(TAG, "onCreate: param " + name + ": " + data.getQueryParameter(name));
用 adb 测试它(注意转义 &
):
adb shell am start -W -a android.intent.action.VIEW -d "http://www.example.com/index.php?page=share\&type=album\&id=34" com.example.myapplication
输出是:
12-03 13:10:41.924 32595-32595/com.example.myapplication D/MainActivity: onCreate: http://www.example.com/index.php?page=share&type=album&id=34
12-03 13:10:41.924 32595-32595/com.example.myapplication D/MainActivity: onCreate: param page: share
12-03 13:10:41.924 32595-32595/com.example.myapplication D/MainActivity: onCreate: param type: album
12-03 13:10:41.924 32595-32595/com.example.myapplication D/MainActivity: onCreate: param id: 34
【讨论】:
我需要管理有参数的链接,所以我不能忽视这一点,最后我用 airbnb/DeepLinkDispatch 库解决了这个问题,但我的问题仍然没有得到解答。谢谢以上是关于Activity Schema Android中的特殊字符的主要内容,如果未能解决你的问题,请参考以下文章
Android 中Fragment和Activity之间的通信
android fragment 怎样调用activity中的方法
android开发 如何从一个activity中的两个按钮分别跳转到另外两个activity?
Android 返回堆栈管理打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task(代码片