Android如何通过scheme跳转界面
时间:2022-07-27
本文章向大家介绍Android如何通过scheme跳转界面,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Android通过scheme跳转界面,应该如何实现?
需求
通过后台返回链接地址
eg: app://com.bobo.package/path?param1=abc¶m2=cde
跳转到指定的Activity 并带入参数
实现
1.在manifest中配置Activity
<activity android:name=".ActivityName"
<intent-filter
<action android:name="android.intent.action.VIEW"/
<category android:name="android.intent.category.DEFAULT"/
<category android:name="android.intent.category.BROWSABLE"/
<data android:scheme="app"
android:host="com.bobo.package"
android:path="/path"/
</intent-filter
</activity
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 跳转界面时 ,系统会提示选择打开方式 因为没有精确匹配要跳哪个界面
<activity android:name=".ActivityAAAAAA"
<intent-filter
<action android:name="android.intent.action.VIEW"/
<category android:name="android.intent.category.DEFAULT"/
<category android:name="android.intent.category.BROWSABLE"/
<data android:scheme="app"/*没有配置host 和path*/
/
</intent-filter
</activity
<activity android:name=".ActivityBBBBBB"
<intent-filter
<action android:name="android.intent.action.VIEW"/
<category android:name="android.intent.category.DEFAULT"/
<category android:name="android.intent.category.BROWSABLE"/
<data android:scheme="app"
android:host="com.bobo.package"
/
</intent-filter
</activity
2.如果不同的链接都要跳到一个Activity
eg: app://com.bobo.package/path?param1=abc¶m2=cde application://host/route?param1=abc¶m2=cde
Activity配置
<activity android:name=".ActivityName"
<intent-filter
<action android:name="android.intent.action.VIEW"/
<category android:name="android.intent.category.DEFAULT"/
<category android:name="android.intent.category.BROWSABLE"/
<data android:scheme="app"
android:host="com.bobo.package"
android:path="/path"/
<data android:scheme="application"
android:host="host"
android:path="/route"/
</intent-filter
</activity
以上就是本文的全部内容,希望对大家的学习有所帮助。
- 以太坊·Rinkeby 测试网络
- TensorFlow强化学习入门(0)——Q-Learning的查找表实现和神经网络实现
- 【云端架构】网站运维之CDN链接鉴权示例入门(PHP)
- 以太坊·单机多实例演示
- TensorFlow强化学习入门(1)——双臂赌博机
- CTF逆向--.NET与Python篇
- CTF逆向--安卓篇
- hackme.inndy.tw的19道web题解(下)
- hackme.inndy.tw的19道web题解(中)
- hackme.inndy.tw的19道web题解(上)
- CTF中RSA题型解题思路及技巧
- 技术解析 | Web缓存欺骗测试
- SSH僵尸主机挖矿木马预警
- 看我如何通过Tor Onion在Windows中执行远程Shell
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释