AndroidはURL Schemeを使ってアプリを呼び起こす

6879 ワード

現在、インターネットの発展のように、単一のappや単一のプラットフォームは会社の業務の需要を満たすことが難しく、マルチプラットフォームの協力や協力は大勢の傾向にある.そして未来のIT業務の発展情勢は必然的に平台化共有化の方向に発展しなければならない.ビジネスのプラットフォームへの依存もますます強くなります.プラットフォーム間のデータ交換と共有は必然的なことです.
遠ざかってアプリそのものに視線を戻す.異なるアプリ間でもデータインタラクションが必要です.栗を挙げて簡単にURL Schemeを言います
もしこのようなシーンがあれば、会社は業務の発展のため、appユーザーがapp内で実名認証を行う必要があり、ちょうど支付宝プラットフォームがゴマ実名認証機能を提供する必要がある.ではappは支付宝appを呼び出して実名認証を行い、実名認証が完了した後、支付宝は実名認証結果を返す必要があります.これにより、異なるapp間でデータインタラクションが完了します.
URL Scheme:
Androidのschemeはページ内ジャンププロトコルであり、非常に良い実現メカニズムであり、自分のschemeプロトコルを定義することで、appの各ページをジャンプするのに非常に便利である.schemeプロトコルにより,サーバはAppにそのページをスキップするようカスタマイズすることができ,通知欄メッセージによりスキップページをカスタマイズすることができ,H 5ページによりページをスキップすることができる.
URL Schemeプロトコルフォーマット:
  1:
http://baidu:8080/news?system=pc&id=45464

  2:
alipays://platformapi/startapp?appId=20000067

httpはSchemeのプロトコルを表します
baiduは、どのアドレスドメインに作用するかを表す
8080はパスのポート番号を表します
ニュースはSchemeが指定したページを表します
Systemとidは伝達するパラメータを表す
URL Schemeの使い方:
まず、起動するactivityをMainifestファイルにフィルタを追加します.
<activity
    android:name="com.example.helloworld.MainActivity">
    
        
        
    
    
    
    

 
受信パラメータはactivityで行います.
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = getIntent();
        String scheme = intent.getScheme();
        String dataString = intent.getDataString();
        Uri uri = intent.getData();
        System.out.println("scheme:" + scheme);
        if (uri != null) {
            //   url  
            String url = uri.toString();
            //scheme  
            String schemes = uri.getScheme();
            //host  
            String host = uri.getHost();
            //port  
            int port = uri.getPort();
            //    
            String path = uri.getPath();
            //    
            String path1 = uri.getEncodedPath();
            //query  
            String queryString = uri.getQuery();
            //     
            String systemInfo = uri.getQueryParameter("system");
       String id=uri.
getQueryParameter("id"); 
       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);
    }
  }
}

呼び出し方法:
Webページでの呼び出し
test

native呼び出し
if (hasApplication()) {
Intent action = new Intent(Intent.ACTION_VIEW);
StringBuilder builder = new StringBuilder();
builder.append("http://baidu:8080/news?system=pc&id=45464");
action.setData(Uri.parse(builder.toString()));
startActivity(action);
}


/**
*          
* @return true      
*/
private boolean hasApplication() {
        PackageManager manager = mContext.getPackageManager();
        Intent action = new Intent(Intent.ACTION_VIEW);
        action.setData(Uri.parse("http://"));
        List list = manager.queryIntentActivities(action, PackageManager.GET_RESOLVED_FILTER);
        return list != null && list.size() > 0;
    }

 
転載先:https://www.cnblogs.com/zhang-cb/p/7093769.html