前言:马上快要毕业一年了,还有三个月,要在毕业一年的时候把android基础看完,把android pro4认真的过一遍,在下一年中仔细看看JAVA基础、高级应用及内核的东西。预算中最后的一年,努力吧。
相关博客:
1、《Uri详解之——Uri结构与代码提取》
2、《Uri详解之二——通过自定义Uri外部启动APP与Notification启动》
一、自定义Uri与外部启动
1、概述
上篇我们讲了Uri的结构,在这篇中,我们将看看如何利用自定义的URI来启动我的的应用。 有时,我们要通过外部Uri链接来启动我们的应用,主要是通过Uri隐式Intent匹配的方式:
Uri uri = Uri.parse("qijian://test.uri.activity?action=1");
Intent intent = new Intent("android.qijian.schemeurl.activity");
intent.setData(uri);
startActivity(intent);
这里通过隐式Intent匹配来启动应用,在这里我们自定义了一个Uri结构:qijian://test.uri.activity?action=1
我们的应用在隐式匹配Intent时,使用的语法为:
<activity
android:name=".SecondActivity"
android:label="@string/title_activity_second">
<intent-filter>
<action android:name="android.qijian.schemeurl.activity" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:scheme="qijian"
android:host="test.uri.activity" />
</intent-filter>
</activity>
我们这里在匹配Intent时,使用指定scheme和host来精确匹配过来的Uri,以防止同名scheme就能启动我们的activity,即本来可能要启人家应用,确我们也横插一脚,用户体验很不好,一定要做到精确匹配,以防大家URI一样出现多个应用让用户选择的情况。
这样,第三方就能通过这个Uri来匿名启动我们的Activity了。
2、实例
(1)、新建用于外部启动的Activity
首先,我们先建一个应用,命名为:SchemeURL,在这个应用中我们新建一个Activity命名为:secondActivity,其XML代码如下:
(这个Activity是为了在外部启动,为了标识这个Activity是这个应用的,把背景色改成了黄色,文字改上了“SchemeURL 的Activity”)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffff00"
tools:context="com.harvic.com.schemeurl.SecondActivity">