1. 程式人生 > >Android開啟其他App

Android開啟其他App

背景:通過其他專案、網頁連結開啟自己的app

1、通過其他專案開啟自己的app

其實就是通過隱式Intent開啟Activity(為方便描述簡稱其他專案為:A,自己的app為:B)

首先B專案中activity設定intent-filter

<activity android:name=".ThridActivity">
    <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="market" android:host="com.trywang.jartest" android:path="/abc" /> </intent-filter>
</activity>
到此為止B專案設定完成,只要在A中寫上開啟B的程式碼就可以了,程式碼如下:
Intent intent = new Intent(Intent.ACTION_VIEW
,Uri.parse("market://com.trywang.jartest/abc?param=1234")); intent.addCategory(Intent.CATEGORY_DEFAULT); startActivity(intent);
上面“market://com.trywang.jartest/abc”就是B專案中配置的data標籤至於後面帶的“?param=1234"則是帶的引數,多個引數使用“?param1=12&param2=34&param3=56”即可,引數可以在ThridActivity中的onCreate()或者onStart()方法獲取

不過在開啟的程式碼中一般為了驗證你要開啟的Intent存在的話需要檢查一下,否則你開啟一個不存在的Intent則造成自己的程式崩潰。程式碼如下:

Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://com.trywang.jartest/abc?abc=1234"));
intent.addCategory(Intent.CATEGORY_DEFAULT);PackageManager packageManager = getPackageManager();
List activities = packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
boolean isIntentSafe = activities.size() > 0;
if (isIntentSafe) {
    startActivity(intent);
}

B專案中ThridActivity的onCreate()方法

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thrid);
TextView tv = (TextView) findViewById(R.id.tv);
Intent intent = getIntent();
Uri uri = intent.getData();
    if (uri != null) {
        String param = uri.getQueryParameter("param");//引數獲取
}
}

這樣就可以。其實這些在官網上都有,其實我主要想mark一下在WebView中通過連線開啟的方式。官網連結

2、通過在A中通過WebView開啟B的ThridActivity

B中配置以上不變,只是在A中開啟的程式碼少許更改。

webview.html關鍵程式碼:

<a href="market://com.trywang.jartest/abc?abc=1234">點選連結</a>
webview設定
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JsInterface(),"Android");
mWebView.setWebChromeClient(new WebChromeClient(){
});
//mWebView.setWebViewClient()
mWebView.loadUrl("file:///android_asset/webview.html");

2.1 不設定webview.setWebViewClient()則開啟系統的瀏覽器,此時點選連結一樣開啟B的ThridActivity

2.2 設定webview.setWebViewClient()則只能通過他的重寫方法shouldOverrideUrlLoading()方法進行跳轉,如果不重寫此方法進行跳轉則無法跳轉!

mWebView.setWebViewClient(new WebViewClient(){
    @Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.d(TAG, "shouldOverrideUrlLoading:1111 " + url);
Intent intent = null;
        try {
            intent = Intent.parseUri(url,Intent.URI_INTENT_SCHEME);
} catch (URISyntaxException e) {
            e.printStackTrace();
            return false;
}

        startActivity(intent);
        return true;
}

});
主要看intent = Intent.parseUri(url,Intent.URI_INTENT_SCHEME)程式碼,將url路徑轉換為intent。此處只是簡單的進行跳轉處理,專案中根據自身情況進行邏輯重寫。

同樣在瀏覽器輸入“market://com.trywang.jartest/abc也能開啟,不過對瀏覽器有要求:好像只能系統瀏覽器或者google chrome的某些版本以上的才能開啟,其他的瀏覽器打不開,如有好方法歡迎備註!

參考資料:


相關推薦

Android開啟其他App

背景:通過其他專案、網頁連結開啟自己的app 1、通過其他專案開啟自己的app 其實就是通過隱式Intent開啟Activity(為方便描述簡稱其他專案為:A,自己的app為:B) 首先B專案中activity設定intent-filter <activity an

關於Android應用內安裝app然後開啟其他app的一些記錄(相容至Android O)

        前段時間個人專案裡需要加入一個預覽word文件的功能,大致流程就是把這個word下載下來,然後用Tencent的X5核心開啟。很簡單對吧,可是讓人頭疼的是將這個功能整合至專案後,一直提示預覽失敗。然而我自己單獨寫的集成了X5核心的demo確是完美開啟,很無語。

react native Linking 打電話 發簡訊 開啟其他App

使用Linking開啟webURL 郵箱 聯絡人等,其實Linking相當於android的Intent: 使用方式為: Linking.openURL(string) //先匯入Linking import { Linking } from 're

註冊URL Scheme步驟以及開啟其他App

一 註冊 URL Scheme 1.設定URL Scheme 在safari位址列中輸入:URL Schemes://identifier (例如:iOSEnterURL://com.Demo

Android 開啟第三方APP

locks oid keyguard app als launcher pack tex lob int mfingerId=mUpdateMonitor.fingerId; Log.d("from keyguard","id is "+mfingerId);

如何跳轉到其他APPandroid

有很多小夥伴會遇上這樣的需求,從自己的app頁面跳轉到其他APP介面,一般情況下都是在自己的主包中跳轉到公司其他APP,或者是合作方的APP,如果手機中沒有這款APP會下載這款APP 。 今天,博主就教你們如何跳轉到其他app。不多說,直接上程式碼。 public class TiaoZhuan exten

android開啟另外的app兩種方式,內建到自己本身的app,重新開啟app

android開啟另外的app兩種方式,內建到自己本身的app空間,重新開啟app空間, 目錄 1、內建到自己本身的app空間, 被開啟的app的activity的主配置檔案的程式碼編寫、 <activity android:n

Android開啟其他應用程式的元件

     componentName=new ComponentName("com.liu.testdemo",            "com.liu.testdemo.Receiver.TextBroadcastReceiver");

Android H5和App互動以及開啟相簿上傳圖片並顯示

一、H5連結開啟App 點選瀏覽器中的URL,如何啟動App呢? 1、HTML連結處理 首先做成HTML的內容,url格式如下: <a href="[scheme]://[host]/[path]?[query]">啟動應用程式</a> 說明:

Android 使用 Scheme 啟動淘寶,天貓等其他APP

最近在開發一個購物的APP,在應用內直接跳轉到淘寶,天貓,京東等其它購物APP,一番查詢研究後找到了解決方法。 直接上結論程式碼(這也是很多人喜歡看的): //需要傳入的 scheme 型別的商品地址 String path ="taobao://item.

Android 6.0 點選跳轉到其他APP,然後立即返回的Bug處理

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); ComponentName cn = am.getRunningTasks(1).get(0

Android 開啟另一個app的兩種方式

//開啟外部app,新視窗開啟 private void doStartApplicationWithPackageName(String packagename) { // 通過包名獲取此APP詳細資訊,包括Activities、services、ver

Android 如何保證App切換到後臺,或頁面跳轉後,重新開啟APP、或返回之前頁面時,維持其狀態不變

專案中遇到的一些小問題,記錄、分享一下。 Android 如何保證App切換到後臺,或頁面跳轉後,重新開啟APP、或返回之前頁面時,維持其頁面狀態不變? 1、問:當APP啟動後,開啟某一介面,然後點選手機HOME鍵,使應用程式退到後臺;當再次開啟App時,如何保證

Android中通過其他APP啟動Activity的四種方式

提示:在啟動一個Activity前進行必要的存在檢測很有必要,以免程式意外崩潰。 第一種:通過applicationId與package+activityPath applicationId告訴系統活動在那個App內,進入App內就需要類路徑找具體的Activity。

android 淘寶天貓支付寶瀏覽器開啟本地app傳遞引數開啟應用內頁

近期由於專案需要,通過瀏覽器開啟本地app應用。經過多方的查詢反覆的嘗試和閱讀。總結出來。有價值的知識的分享出來。雖說不是很難。 第一步: 寫好相關的js方便調取如下: <!DOCTYPE html> <html lang="en"&

IOS監測其他APP是否開啟的思路

原地址:http://www.hudongdong.com/talk/369.html 之所以寫這篇文章是因為碰到一個問題,因為最近要做一個app去鼓勵使用者下載其他的app,所以需要我們去監測使用者是否下載了指定的軟體並且執行試玩了,重點就是我們的軟體在使用者點選去a

android在只擁有第三方apk的情況下在自己app開啟第三方app

前提是第三方apk的AndroidManifest的某個activity中的export = "true" /** * * 開啟另一個app * @param packageName * @param classNam

Django打造在線教育平臺_day_3: 搭建後臺管理系統Xadmin之其他app的數據表註冊

user cli mode lis mob use lds desc gist courses/adminx.py import xadmin from .models import Course, Lesson, Video, CourseResource class

Android中使App高速、簡單地支持新浪微博、微信、QQ、facebook等十幾個主流社交平臺的分享功能

分析 ont renren androidm mod 執行 xen 12px 操作 前言 在如今的APP或者遊戲中,分享功能差點兒已經成為標配。分享功能不但能夠滿足用戶的需求。也能夠為產品帶來很多其它的用戶,甚至能夠對用戶的行為、活躍度、年齡段等情況進行數據統計,使得軟

[ios] 如何調用其他app h5界面調用打開app

nss build 一個 baidu shared detail view query 信息 參考資料:app喚醒app      h5喚醒app     有趣的URL Scheme 被喚起端需要做的工作(demoApp): 1.設置URL Scheme 只是一個ap