Allowing OtherApps to Start Your Activity
為了開發更多人使用的App,我們總希望我們的App能夠提供一種接口被其他App調用。如我們常見的 大眾點評 與 豆瓣。他們這種資源豐富的App能給我們提供很多豐富的資源。
例如豆瓣的scheme:
[html]
<activity
android:name="com.douban.movie.PlayVideoActivity"
>
<intent-filter>
<action
android:name="com.douban.movie"
>
</action>
<action
android:name="android.intent.action.VIEW"
>
</action>
<category
android:name="android.intent.category.DEFAULT"
>
</category>
<category
android:name="android.intent.category.BROWSABLE"
>
</category>
<data
android:scheme="http"
android:host="movie.douban.com"
android:pathPattern="/trailer/.*/"
>
</data>
</intent-filter>
</activity>
主要的是在於定義了:
[html]
android:name="android.intent.category.BROWSABLE"
和
[html]
<data
android:scheme="http"
android:host="movie.douban.com"
android:pathPattern="/trailer/.*/"
>
</data>
我們知道,如果用戶的手機上沒有安裝您的App,第三方App如果需要使用Scheme跳轉的話就會產生錯誤。
這個樣子的話我們的一般解決辦法是直接跳轉到網頁版的應用上去。
所以,將Scheme寫成類似Url的形式方便我們進行應用內的跳轉與網頁上的跳轉。
當然,也可以分開來寫,如同大眾點評的。
[java]
String id = "3102397";
try
{
Uri url = Uri.parse("dianping://shopinfo?id=" + id);
Intent intent = new Intent(Intent.ACTION_VIEW, url);
mContext.startActivity(intent);
}
catch (Exception e)
{
// 沒有安裝應用,默認打開HTML5站
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.dianping.com/shop/" + id));
mContext.startActivity(intent);
}