說實現(xiàn)步驟再說原理:
使用步驟
以JumpActivity為例
如下面的: <intent-filter> 中就是所需過濾器
<activity android:name=".JumpActivity" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!--下面所設(shè)置的質(zhì)需要和html端對調(diào)--> <!--在data里設(shè)置了 scheme和host,則該Activity可以接收和處理類似于 "sharetest://data/XXX"的鏈接--> <data android:host="data" android:scheme="sharetest" /> </intent-filter> </activity>
public class JumpActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Intent intent=getIntent();//在這個Activity里,我們可以通過getIntent(),來獲取外部跳轉(zhuǎn)傳過來的信息。 String data=intent.getDataString();//接收到網(wǎng)頁傳過來的數(shù)據(jù):sharetest://data/http://www.huxiu.com/ String[] split=data.split("data/");//以data/切割data字符串 url=split[1]; //就得到:http://www.huxiu.com/(這就是我們需要網(wǎng)頁傳給我們的數(shù)據(jù)) 。。。然后我們再通過網(wǎng)頁打開app的同時就可以用獲得的url數(shù)據(jù)做一些我們需要做的處理 比如你在微信里瀏覽網(wǎng)頁時打開自己的安卓app應(yīng)用的同時,加載一個app內(nèi)的網(wǎng)頁 } }
<iframe src="" style="display:none"></iframe> 如下:index.html <!DOCTYPE html> <html> <body> <iframe src="sharetest://data/http://www.huxiu.com/" style="display:none"></iframe> </body> </html> 將index.html放到Assets目錄下,在代碼里調(diào)用Webview加載該Html文件,代碼如下: /*網(wǎng)頁打開app*/ public class H5ToAppActivity extends Activity { private String url; private WebView webview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_h5_app); webview=(WebView) findViewById(R.id.webviewh5); url="file:///android_asset/index.html"; WebSettings wSet=webview.getSettings(); wSet.setJavaScriptEnabled(true); webview.loadUrl(url); } }
這樣執(zhí)行以上代碼時就可以打開對應(yīng)的app了。
比如我的2048是一個網(wǎng)頁,打開網(wǎng)頁的時候可以同時打開另外一個應(yīng)用
下面是兩個應(yīng)用截圖你可以下載下來看下效果:(兩個應(yīng)用一起下)
2048網(wǎng)頁演示apk:http://download.csdn.net/detail/qiushi_1990/9514778
網(wǎng)頁打開的應(yīng)用apk:http://download.csdn.net/detail/qiushi_1990/9514779
手機(jī)界面
這樣在打開2048時會出現(xiàn)下面效果
然后會跳轉(zhuǎn)到下面應(yīng)用
跳轉(zhuǎn)成功
最近,在使用QQ和微信等SDK來實現(xiàn)分享網(wǎng)頁的時候,發(fā)現(xiàn),SDK已經(jīng)為頁面跳轉(zhuǎn)回應(yīng)用提供了基本的數(shù)據(jù)支持。我們只需在應(yīng)用里和被分享的網(wǎng)頁進(jìn)行簡單的設(shè)置,即可實現(xiàn)此功能。
那么我們先來看下網(wǎng)頁跳轉(zhuǎn)回應(yīng)用的實現(xiàn)原理。
就Android平臺而言,URI主要分三個部分:scheme, authority and path。其中authority又分為host和port。格式如下:
scheme://host:port/path
舉個實際的例子:
content://com.example.project:200/folder/subfolder/etc \---------/ \---------------------------/ \---/ \--------------------------/ scheme host port path \--------------------------------/ authority //現(xiàn)在大家應(yīng)該知道data flag中那些屬性的含義了吧,看下data flag <data android:host="string" android:mimeType="string" android:path="string" android:pathPattern="string" android:pathPrefix="string" android:port="string" android:scheme="string" />
點擊微信和QQ分享跳轉(zhuǎn)到程序內(nèi)部的原理與此一致。
寫在后面:
由于微信在5.0.3以后就禁用了微信瀏覽器里打開別的app,所以上面的方法在微信里不能直接起作用。但是我們有補救方法,
1,通過跳轉(zhuǎn)應(yīng)用寶,來判斷是否安裝應(yīng)用,如果安裝應(yīng)用寶會直接打開
2,引導(dǎo)用戶在瀏覽器里打開當(dāng)前網(wǎng)頁,因為微信雖然禁止了android:scheme跳轉(zhuǎn),但是瀏覽器都是支持的。
編程小石頭,為分享干貨而生!據(jù)說,每個年輕上進(jìn),顏值又高的互聯(lián)網(wǎng)人都關(guān)注了編程小石頭。
天和大家交流一下HtmlTextView的使用,HtmlTextView是一個開源的原生安卓第三方控件,主要的用途是直接把web端的html內(nèi)容解析后展示在安卓手機(jī)上。應(yīng)用場景很多,比如很多新聞類APP在web端編輯入庫后是html的格式,這時候如果想顯示在手機(jī)上,HtmlTextView就是一個很好的選擇,當(dāng)然有人會說谷歌自己的TextView通過一些方法也可以實現(xiàn),但是我試過,效果簡直不能再差,而且使用起來很復(fù)雜。這個HtmlTextView有多好,話不多說,直接上圖:
在使用的時候,第一步是引入控件的依賴:
repositories {
jcenter()
}
dependencies {
compile 'org.sufficientlysecure:html-textview:4.0'
}
引入依賴后有幾種不同的使用方式,根據(jù)自己實際的場景進(jìn)行選擇:
大部分的html標(biāo)簽都已經(jīng)支持:
<p>
<div> handled exactly like <p>
<br>
<b>
<i>
<strong> (bug on some Android versions: generates italic)
<em> (bug on some Android versions: generates bold)
<u>
<tt>
<dfn>
<sub>
<sup>
<blockquote>
<cite>
<big>
<small>
<font color="..." face="...">
<h1>, <h2>, <h3>, <h4>, <h5>, <h6>
<a href="...">
<img src="...">
最后,一個最重要的問題,也是我最近使用遇到的最大的問題:
當(dāng)html里面有src或者h(yuǎn)ref等的時候,如果不做處理,APP會出現(xiàn)無法跳轉(zhuǎn)至瀏覽器并且崩潰閃退的情況。解決這個問題的辦法就是在方法里添加對應(yīng)的點擊事件,如下:
實踐源于需求,
一個前端需求,需求如下:
前端網(wǎng)頁有三種聯(lián)系方式,郵箱,手機(jī)號,微信,
怎么實現(xiàn)手機(jī)上在網(wǎng)頁上點擊該文字進(jìn)行相應(yīng)的跳轉(zhuǎn)
如:
點擊郵箱號跳轉(zhuǎn)到郵箱應(yīng)用
點擊手機(jī)號跳轉(zhuǎn)到撥號應(yīng)用
點擊微信號跳轉(zhuǎn)到微信應(yīng)用
點擊QQ號跳轉(zhuǎn)到QQ應(yīng)用
下面是簡單的實現(xiàn)步驟。
-- 記錄與 2021年09月19日 測試可用
簡單的HTML頁面
任意手機(jī)瀏覽器
Android手機(jī) 或 IOS手機(jī)
<a href="mailto:support@xxx.com">郵箱:mailto:support@xxx.com</a>
<a href="tel:123">手機(jī):123 </a>
<a href="weixin://">微信號:123 </a>
# 這個未測試,網(wǎng)上兩種方法,可以都實踐下
<a hfer="tencent://message/?uin=12345&Site=&Menu-=yes">彈出QQ為12345的窗口</a>
<a href="http://wpa.qq.com/msgrd?v=3&uin=1846189021&site=qq&menu=yes">聯(lián)系客服</a>
<a href="mailto:support@xxx.com">聯(lián)系我們</a>
<a href="tel:110">123 </a>
<a href="weixin://">123 </a>
<a hfer="tencent://message/?uin=12345&Site=&Menu-=yes">彈出QQ為12345的窗口</a>
前三個郵箱、手機(jī)、微信都自身測試過,
Android, IOS點擊可跳轉(zhuǎn)對應(yīng)應(yīng)用,
QQ只是在網(wǎng)上搜了下,沒做測試,可以嘗試下看能不能成功
不過話說回來,找了半天,只在網(wǎng)上一些博客里找到了上述這幾種的應(yīng)用跳轉(zhuǎn),
不知道有沒有比較官方的文檔或者資料可以找到的,
當(dāng)然,也可能是我關(guān)鍵詞沒搜對?
有知道的麻煩留言或者私我呼我下
如有遺漏歡迎補充
如有問題歡迎留言
如有作用歡迎點贊
方便的話點個關(guān)注收藏更好了
2021年09月19日測試可用
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。