AndroidでURL Scheme方式でappを起動

5039 ワード

URL Schemeはandroidでappを引っ張る方法の一つとしてよく見られます
メリット
  • は、ウェブページからapp
  • を引き出すことができる.
  • 具体的なActivity
  • を引き上げることができる
    説明
    Androidはurl schemeでactivityを開き、manifestで以下のパラメータを構成するだけでよい
    
        
            
                
                    "***"
                        android:path="***"
                        android:scheme="***">
                    
                    ...

    実際にはに他のパラメータがあり、複雑なニーズがあれば検討することができます.
    ここではこれらのパラメータを見ればいいのでurl形式を参考にすることができます
    android:scheme     
    android:host     
    android:path     

    のように
    android:scheme="http"
    android:host="www.baidu.com"
    android:path="/s"
    
    http://www.baidu.com/s?wd=what
    
                      

    例を挙げる
     activity   
    <intent-filter>
        <data
            android:host="www.adc.com"
            android:path="/person"
            android:scheme="myapp"/>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
    intent-filter>

    これにより、リンクmyapp://www.abc.com/personを介してこのactivityを開くことができる.例えばactivityを開いてユーザの情報myapp://www.abc.com/person?id=123を開くなど、より複雑にすることができる.
    htmlページからappを起動する
    別のappにその中の人員情報を表示させます.それはidを1つ伝えればhtmlでurlリンクを直接使用してappを起動し、具体的なactivityを開くことができます.
    <a href="myapp://www.abc.com/person?id=123&search=https://www.baidu.com/s?wd=what">start appa>

    Javaコードからappを起動する
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("myapp://www.abc.com/person?id=123&search=https://www.baidu.com/s?wd=what"));
    startActivity(intent);

    入力パラメータの解析
    Intent intent = getIntent();
    String action = intent.getAction();
    if(Intent.ACTION_VIEW.equals(action)){
       Uri uri = intent.getData();
       if(uri != null){
          String id = uri.getQueryParameter("id"); // id="123"
          String search = uri.getQueryParameter("search"); // search="https://www.baidu.com/s?wd=what"
       }
    }