对于一些比较大型的项目,业务中可能会有其他APP的入口。一般分为两种:1.项目中内嵌一个友商的SDK(集成了部分业务的SDK)    2.唤醒友商的SDK(主要是已经安装的app),今天主要说下唤醒吧。

1.使用Intent,通过包名.类型进行唤醒:

被唤起的APP的类在manifest.xml的配置:

<activity android:name=".MyTestActivity1"  android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

唤醒启动:com.example.myapplication1为包名,com.example.myapplication1.MyTestActivity1 包名.类名

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example.myapplication1","com.example.myapplication1.MyTestActivity1"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

2.通过intent使用Uri唤醒:

<activity android:name=".TestActivity3"  android:exported="true"><intent-filter> <action android:name="test.action" /><category android:name="android.intent.category.DEFAULT" />    <dataandroid:host="test.uri.activity"android:scheme="app" /></intent-filter>
</activity>

启动:

Uri uri = Uri.parse("app://test.uri.activity?id=1");
Intent intent2 = new Intent("test.action");
intent2.setData(uri);
startActivity(intent2);

被唤醒的页面获取Uri传递过来的参数:

if (null != intent) {Uri uri = intent.getData();if (uri == null) {return;}String TAG = "TAG";if (uri != null) {// 完整的url信息String url = uri.toString();Log.e(TAG, "url: " + url);// scheme部分String scheme = uri.getScheme();Log.e(TAG, "scheme: " + scheme);// host部分String host = uri.getHost();Log.e(TAG, "host: " + host);String data = uri.getQueryParameter("id");Toast.makeText(this, data, Toast.LENGTH_SHORT).show();}}

3.H5网页浏览器唤醒:

1.先写一个web小项目,有网页就行如下图所示,并且部署到tomcat:

在浏览器上打开此链接便是:

咱们肯定是在手机的浏览器中打开此链接,也是这个样子的

2.配置:

<activity android:name=".TestActivity4" android:exported="true"> <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="test.my.app" android:pathPrefix="/path" /></intent-filter>
</activity>

配置完毕之后,点击手机浏览器加载的此网页的“”点我吧...“”既可以唤醒了。

对应的此页面获取参数:

 String TAG="TAG";Uri uri = getIntent().getData();if (uri != null) {// 完整的url信息String url = uri.toString();Log.e(TAG, "url: " + url);// scheme部分String scheme = uri.getScheme();Log.e(TAG, "scheme: " + scheme);// host部分String host = uri.getHost();Log.e(TAG, "host: " + host);//port部分
//            int port = uri.getPort();
//            Log.e(TAG, "host: " + port);// 访问路劲String path = uri.getPath();Log.e(TAG, "path: " + path);List<String> pathSegments = uri.getPathSegments();// Query部分String query = uri.getQuery();Log.e(TAG, "query: " + query);//获取指定参数值String goodsId = uri.getQueryParameter("query1");Log.e(TAG, "query1: " + goodsId)

注意:1.scheme,host,path都小写

            2.scheme不要用http或者https

关于APP唤醒的方法总结相关推荐

  1. iOS App 唤醒另一个App

    iOS App 唤醒另一个App 网上也有讲这块的,感觉讲得都不是很好.而且有一些细节根本没有讲清楚.这里重写整理一下相关知识点. 主要内容 URL Scheme 是什么? 项目中关键的配置 注意事项 ...

  2. Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net

    Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net 1. 提升单例有能力的1 2. 减少工作数量2 2.1. 减少距 ...

  3. android获取版本号报错,Android开发:获取安卓App版本号的方法步骤

    在Android开发过程中,想要开发一个完整功能的App,各个地方的内容都要涉及到,比如获取App的系统版本号就是必须要有的功能.Android的App版本号相关内容比iOS的App版本号内容要多,而 ...

  4. 5s的app显示无法连接服务器,苹果iphone5s手机无法连接App Store问题解决方法汇总...

    iphone5s无法连接App Store怎么办?大家在使用iphone5s过程中可能会遇到无法连接app store的问题,那怎么办呢?本文小编就主要给大家讲解一下如何解决iphone5s无法连接A ...

  5. vue js 和原生app调用回调方法问题

    vue js 和原生app调用回调方法问题 import Vue from 'vue' export default { name: 'list', components: { }, data: () ...

  6. 【uni-app】使用定义在App.vue的方法

    [uni-app]使用定义在App.vue的方法 前言 在methods中添加(推荐) 在globalData中添加方法(不建议) 前言 接手了一个小程序项目,考虑到后期可能会扩展到APP上,筛选技术 ...

  7. 安卓设置keychain_Android 7.0 SEAndroid app权限配置方法

    1.SEAndroid app分类 SELinux(或SEAndroid)将app划分为主要三种类型(根据user不同,也有其他的domain类型): 1)untrusted_app 第三方app,没 ...

  8. android 加网络权限管理,Android添加用户组及自定义App权限的方法

    Android:4.4.4 一.应用场景 在Android设备上,现在我们外接了一个USB转串口的设备,设备节点是/dev/ttyUSB0: # ls -l /dev/ttyUSB0 crw-rw-- ...

  9. LR11录制手机/pad App脚本多种方法介绍(Mobile App补丁包)

    总体来说,通过LR录制手机脚本的方式有三种: 1)通过代理方式录制,保证手机电脑在同一个网段: 2)通过抓包录制,在手机上安装Mobile Recorder: 3)通过安卓模拟器录制,本地安装andr ...

最新文章

  1. 深度学习模型参数量/计算量和推理速度计算
  2. linux高编IO-------opendir、closedir、readdir
  3. codeforce 1070 H
  4. set trans 必须是事务处理的第一个语句_MySQL中特别实用的几种SQL语句送给大家
  5. 【JS 逆向百例】网洛者反爬练习平台第二题:JJEncode 加密
  6. apple quicktime怎么在ppt中用_PPT情感专题大赏No. 007:一份这就是街舞第三季主题PPT(上集)...
  7. java中mvc开发模式_MVC开发模式
  8. [深度学习]-CNN-ImageNet历年冠军和相关CNN模型
  9. 围绕HugeTLB的极致优化
  10. 视频:我是设计师高清完整版Plus拍摄花絮
  11. php7 magento速度优化,7个更快的加载速度的Magento优化快速提示
  12. 中国电信边缘计算最佳实践
  13. 代号红狗:那些站在微软云起点的中国创业者
  14. 对称矩阵的特征值与特征向量
  15. linux修改dns教程,修改Centos的DNS地址
  16. edoc2文档管理系统
  17. 计算机体系结构 ---- flynn 分类
  18. 反射可以使用lambda吗_社保卡可以在外地使用吗?
  19. vnc好用吗,vnc是什么,vnc好用吗
  20. Android开发笔记:关于SeekBar在刷新使用中的一些问题

热门文章

  1. 萌宠大作战服务器维护,萌宠大作战攻略 萌宠大作战部分常见疑问介绍
  2. 制作项目——坦克大战
  3. expdp 很慢:Streams AQ: enqueue blocked on low memory
  4. 如何遍历map与JSON
  5. 匿名对象调用与使用容器一次性添加多个类的方法
  6. 2016湖南湘潭邀请赛 - 2019牛客国庆集训派对day6
  7. Swift 链表反转
  8. VS RTKLIB调试错误
  9. 老烂腿都有哪些症状?
  10. 小程序用php介入直播功能,微信小程序直播接入指南