Android學習筆記---通過網頁喚醒自己的APP並且傳參
阿新 • • 發佈:2019-01-29
前言
相信大家在生活中會發現很多網頁都有這樣的功能,前一秒還在網頁呢 後一秒莫名其妙的就進入了他們的APP,那麼這種效果到底是如何做的呢?
經過本屌絲認真學習後發現是使用安卓中android:scheme屬性來完成功能的,這裡說一下我個人看法,我覺得android:scheme屬性很想Intent的隱式匹配,或者說他就是隱式的一種,言歸正傳 接下來我們來看一下到底咋用
實踐部分
首先我們先新建一個專案並且在AndroidManifest.xml
中加入android:scheme屬性
<!--增加如下屬性,其中crack是喚醒程式的action-->
<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="crack"/>
</intent-filter>
現在我們在MainActivity中獲取網頁轉過來的引數
public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text_ht);
Intent intent = new Intent();
//獲取引數詳情
Uri uri = intent.getData();
if(uri != null){
textView.setText(uri.getPath());
String host = uri.getHost();
String dataString = intent.getDataString();
String id = uri.getQueryParameter("d");
String path = uri.getPath();
String path1 = uri.getEncodedPath();
String queryString = uri.getQuery();
System.out.println("host:"+host);
System.out.println("dataString:"+dataString);
System.out.println("id:"+id);
System.out.println("path:"+path);
System.out.println("path1:"+path1);
System.out.println("queryString:"+queryString);
}
}
}
現在咱們APP該做的視訊已經做完了,現在來搞網頁的
新建一個ht.html
<html>
<head>
<meta http-equiv=content-type content="text/html;charset=utf-8">
<title>網頁喚醒APP</title>
</head>
<body>
<input id="txt"/>
<input type="button" value="提交" onclick="sub()">
</body>
<script>
//獲取內容
function sub(){
var content = document.getElementById("txt");
//此處注意其中crack替換為你APP中設定的名字
var str = 'crack://crack.gm:80/'+content.value+'?p=91&d=15';
openUrl(str);
}
//喚醒APP
function openUrl(url){
window.open(url);
}
</script>
</html>
接下來 我們來執行一下看看效果