AndroidカスタムURL Scheme

4421 ワード

URIからMobileとWebデータを見ると、Androidの設計者たちはActivityにURIを導入した.すなわち、URL Schemeをカスタマイズすることで1ページを特定し、外部と内部アプリケーションはuriを通じてAndroidの各ページを非常に便利に特定することができ、文章はAndroidビジネスコンポーネント化されたURL Schemeから転載され、総李書コードに感謝している.
1、URL Schemeとは?
Androidのschemeはページ内ジャンププロトコルであり、非常に良い実現メカニズムであり、自分のschemeプロトコルを定義することで、appの各ページをジャンプするのに非常に便利である.schemeプロトコルにより,サーバはAppにそのページをスキップするようカスタマイズすることができ,通知欄メッセージによりスキップページをカスタマイズすることができ,H 5ページによりページをスキップすることができる.
2、URL Schemeアプリケーションシーン
クライアントアプリケーションは、ブラウザまたは他のアプリケーションからアプリケーションを起動するためのURL schemeをオペレーティングシステムに登録することができる.指定したURLフィールドを使用すると、呼び出し後に特定のページ(商品詳細ページ、アクティビティ詳細ページなど)を直接開くことができます.支払いの完了など、特定の動作を実行することもできます.アプリケーション内でhtmlページを介してapp内を表示するページを直接呼び出すこともできます.URL Schemeの使用シーンをまとめると、大きく分けて以下のようになります.
サーバはジャンプパスを発行し、クライアントはサーバのジャンプパスに従って対応するページをジャンプする.
H 5ページアンカーポイントをクリックし、アンカーポイントの具体的なジャンプ経路APP端によって具体的なページをジャンプする.
APP側はサーバ側から送信されたPUSH通知欄のメッセージを受け取り、メッセージのクリックジャンプ経路に従って関連ページをジャンプする.
APPはURLに従って別のAPP指定ページにジャンプする
3、URL Schemeプロトコルフォーマット
まず完全なURL Schemeプロトコルをください.
xl://goods:8888/goodsDetail?goodsId=10011002
上のパスScheme、Host、port、path、queryを全て含むことで、基本的に普段からパスを使うのはこのようなものです.
xlはこのSchemeプロトコル名を表す
goodsはSchemeがどのアドレスドメインに作用するかを表すgoodsDetail代表Scheme指定ページgoodsIdは伝達パラメータを表す
8888は、パスのポート番号を表します.
4、URL Schemeはどのように使いますか?
1.)AndroidManifest.xmlでのラベル追加設定Scheme
        
            
            
                
                
                
                
                
                
            
        

2)Schemeジャンプのパラメータを取得する
Uri uri = getIntent().getData();
if (uri != null) {
    //    url  
    String url = uri.toString();
    Log.e(TAG, "url: " + uri);
    // scheme  
    String scheme = uri.getScheme();
    Log.e(TAG, "scheme: " + scheme);
    // host  
    String host = uri.getHost();
    Log.e(TAG, "host: " + host);
    //port  
    int port = uri.getPort();
    Log.e(TAG, "host: " + port);
    //     
    String path = uri.getPath();
    Log.e(TAG, "path: " + path);
    List pathSegments = uri.getPathSegments();
    // Query  
    String query = uri.getQuery();
    Log.e(TAG, "query: " + query);
    //       
    String goodsId = uri.getQueryParameter("goodsId");
    Log.e(TAG, "goodsId: " + goodsId);
}

3)呼び出し方式
Webページ
<a href="xl://goods:8888/goodsDetail?goodsId=10011002">      a>

オリジナルコール
  Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("xl://goods:8888/goodsDetail?goodsId=10011002"));
  startActivity(intent);

4.)Schemeが有効かどうかをどう判断するか
PackageManager packageManager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("xl://goods:8888/goodsDetail?goodsId=10011002"));
List activities = packageManager.queryIntentActivities(intent, 0);
boolean isValid = !activities.isEmpty();
if (isValid) {
    startActivity(intent);
}