Android通过scheme跳转界面,应该如何实现?
需求
eg: app://com.bobo.package/path?param1=abc¶m2=cde
跳转到指定的Activity 并带入参数
实现
1.在manifest中配置Activity
android:host="com.bobo.package"
android:path="/path"/>
2.实现跳转
private void startActivity(Context context) {
try {
Uri uri = Uri.parse("app://com.bobo.package/path?param1=abc¶m2=cde");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(uri);
PackageManager packageManager=getPackageManager();
ComponentName componentName=intent.resolveActivity(packageManager);
if (componentName!=null){
context.startActivity(intent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
3.Activity中处理数据获取参数
private void dealScheme() {
Intent intent = getIntent();
String action = intent.getAction();
Uri uri=null;
if (Intent.ACTION_VIEW.equals(action)) {
Uri uri= intent.getData();
}
if(uri==null)
return;
String param1=url.getQueryParameter("param1");
String param2=url.getQueryParameter("param2");
// doSomething(param1,param2);
}
填坑
1.如下两个Activity 当通过scheme 跳转界面时 ,系统会提示选择打开方式 因为没有精确匹配要跳哪个界面
/>
android:host="com.bobo.package"
/>
2.如果不同的链接都要跳到一个Activity
eg: app://com.bobo.package/path?param1=abc¶m2=cde
application://host/route?param1=abc¶m2=cde
Activity配置
android:host="com.bobo.package"
android:path="/path"/>
android:host="host"
android:path="/route"/>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!