我想捕获网站网址的视图操作以及我网站中的特定路径。
http://examplesite.com/
http://examplesite.com/detail/nameOfProduct
我希望主要活动对第一个网址开放,所以我使用了:
<data
android:host="examplesite.com"
android:scheme="http"/>
并且对于第二个网址,我想要打开详细活动,所以我把:
<data
android:host="examplesite.com"
android:pathPrefix="/detail"
android:scheme="http"/>
现在的问题是,在意图中调用第一个URL时,两个活动都显示给用户选择,而我只想显示主要活动。我怎么解决这个问题。我做错了什么?
答案 0 :(得分:0)
您可以尝试这种替代方式, 为appindexing创建一个单独的活动,以便为该特定活动添加意图过滤器,因此只有此活动才会指向启动到您的应用中。
<activity
android:name=".BeginApp">
<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="http"
android:host="www.example.site"
android:pathPrefix="/"
/>
</intent-filter>
</activity>
登陆此活动后
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.balankpage);
Uri data = getIntent().getData();
system.out.println("DATA: "+data);
if(data!=null)
{
String tmpData = data.toString();
String hostName = data.getHost();
if(tmpData.equalIgnoreCase("http://www.examplesite.com/"))
{
LaunchActivity1();
finish();
}
else if(tmpData.equalIgnoreCase("http://examplesite.com/detail/nameOfProduct"))
{
LaunchActivity2();
finish();
}
}
注意:您也可以使用正则表达式拆分uridata(收到的网址)并完美匹配,并根据您的需要制作条件。
答案 1 :(得分:0)
您遇到此问题的原因是第一个意图过滤器与http://examplesite.com*
匹配。
使用pathPrefix =&#34; /&#34;不会像以前那样工作:http://examplesite.com/*
现在问题的解决方案是替换它:
<data
android:host="examplesite.com"
android:scheme="http"/>
使用:
<data android:scheme="http"
android:host="examplesite.com"
android:pathPattern="/"/>
答案 2 :(得分:0)
我建议您只注册主要活动并在那里解析网址,如果它导致/详细信息,则启动详细信息活动