Androidプロジェクトはschemeを通じてWebViewでアプリケーションを開きます
7444 ワード
1.schemeプロトコルの定義と用途と需要の実現構想
1.Androidのschemeはページ内ジャンププロトコルであり、非常に良い実現メカニズムである.2.自分のschemeプロトコルを定義することで、appの各ページを簡単にジャンプすることができます.3.h 5ページでリンクを定義し、指定したactivityページにジャンプします.クライアントはh 5ページにurlschemeを登録し、ブラウザからactivityを起動するためにschemeプロトコルによって使用する.4.使用シーンのまとめ:クライアントはサービス側から送信されたurlに基づいて指定されたページにジャンプする.h 5ページから対応するactivityページにジャンプします.appはurlに基づいて別の指定されたappページにジャンプします(大手企業は、人気のあるリンクを通じて別のappにジャンプします).
2.androidでのschemeの使用場所
3.schemeプロトコル定義はhttpプロトコルと類似しており,いずれも標準的なURI構造である.
[scheme:][//host:port][path][?query][fragment]scheme:プロトコル名-必須host:プロトコルアドレス-必須port:プロトコルのポート、path:プロトコルパスを記入せず、複数のqueryを使用可能/接続可能:携帯パラメータ使用可能&複数のfragmentへの接続:アンカーポイント
4.demoの例
//1. h5 , :/main/assets/test.html
function startApp(params)
{
window.location.href = params
}
//2.activity_main.xml
//3.MainActivity
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = findViewById(R.id.webview);
webView.loadUrl("file:///android_asset/test.html");
webView.getSettings().setJavaScriptEnabled(true);
// , setWebViewClient , ,
// , , 。
}
}
4.2.アプリケーションBのコード
//1.AndroidManifest.xml
//2.activity_main.xml
//3.MainActivity
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private String TAG = "TAG";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
Log.e(TAG, "scheme:" + intent.getScheme());
Uri uri = intent.getData();
if (uri != null) {
// scheme
Log.e(TAG, "scheme: " + uri.getScheme());
// scheme host
Log.e(TAG, "host: " + uri.getHost());
// scheme
Log.e(TAG, "path: " + uri.getPath());
// scheme ,?
Log.e(TAG, "queryString: " + uri.getQuery());
// scheme param
Log.e(TAG, "queryParameter: " + uri.getQueryParameter("param"));
}
}
}
getScheme() : Uri scheme :[scheme:]
getSchemeSpecificPart() : Uri scheme-specific-part: :[//host:port][path]
getFragment() : Uri Fragment :[#fragment]
getAuthority() : Uri Authority :[//host:port]
getPath() : Uri path :[path]
getQuery() : Uri query :[?query]
getHost() : Authority Host
getPost() : Authority Port
List< String> getPathSegments() : Path ,
getQueryParameter(String key) : query key
5.まとめ