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プロトコルフォーマット:
httpはSchemeのプロトコルを表します
baiduは、どのアドレスドメインに作用するかを表す
8080はパスのポート番号を表します
ニュースはSchemeが指定したページを表します
Systemとidは伝達するパラメータを表す
URL Schemeの使い方:
まず、起動するactivityをMainifestファイルにフィルタを追加します.
受信パラメータはactivityで行います.
呼び出し方法:
Webページでの呼び出し
native呼び出し
転載先:https://www.cnblogs.com/zhang-cb/p/7093769.html
遠ざかってアプリそのものに視線を戻す.異なるアプリ間でもデータインタラクションが必要です.栗を挙げて簡単に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