一 .提供scheme链接在第三方应用Activity中唤醒

  1. 在自己app中的AndroidManifest.xml文件里包含<action android:name="android.intent.action.MAIN" />的activity标签中添加一个新的intent-filter标签 ,注意data标签里的scheme、host属性,代码如下

    <activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><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:host="main.app" android:scheme="sysc"/><!-- 访问链接sysc://main.app?cid=参数 --></intent-filter>
    </activity>
  2. 在第三方应用内部就可以用如下方式调用了
    String url = "sysc://main.app?key=传递的参数"
    Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity(in);
    
  3. 然后在我们的MainActivity中通过如下代码获得参数并做相应处理
    ​
    //获取其他应用唤醒该app传过来的参数
    Intent intent = getIntent();
    String scheme = intent.getScheme();
    Uri uri = intent.getData();
    if (uri != null) {//获得参数值cid = uri.getQueryParameter("cid");
    }
    Log.d(TAG,"scheme="+scheme+",cid="+cid);​

二 .提供链接在第三方应用webview页面中唤醒

在Android的webview中本是不支持直接打开本地应用的,所以我们就要自己来处理, 通过在重定向的时候判断是否是普通的网页链接,如果不是则为scheme调用的这种,则我们自己来处理为意图(intent)进行跳转.

具体操作: 在第三方应用的Activity中新建webview并重写其父类的shouldOverrideUrlLoading方法:

public class MainActivity extends AppCompatActivity{private WebView webView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);WebViewClient webViewClient = new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(final WebView view, String url) {if (url.startsWith("http") || url.startsWith("https")) { //http和https协议开头的执行正常的流程return false;} else {  //其他的URL则会开启一个Acitity然后去调用原生APPIntent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url));if (in.resolveActivity(getPackageManager()) == null) {//说明系统中不存在这个activityview.post(new Runnable() {@Overridepublic void run() {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setMessage("应用未安装,是否前往下载页面?");builder.setTitle("提示");builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();view.loadUrl("https://www.baidu.com");//此处应改为我们app的下载地址}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}});} else {in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);startActivity(in);}return true;}}};webView = findViewById(R.id.webView);webView.getSettings().setJavaScriptEnabled(true);webView.setWebViewClient(webViewClient);webView.loadUrl("file:///android_asset/new_file.html"); //包含跳转链接的html页面}}

布局文件如下

Html页面如下

Html在android项目中的路径

在我们的app中通过如下代码获得参数并做相应处理

​ @Overrideprotected void onCreate(Bundle savedInstanceState) {
​//获取其他应用唤醒该app传过来的参数Intent intent = getIntent();String scheme = intent.getScheme();Uri uri = intent.getData();if (uri != null) {//获得参数值cid = uri.getQueryParameter("cid");}Log.d(TAG,"scheme="+scheme+",cid="+cid);if (!cid.equals("") && "sysc".equals(scheme)){//此处编写处理跳转请求的逻辑}
}​​

通过第三方app唤醒自己的app相关推荐

  1. iOS App 唤醒另一个App

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

  2. android广播唤醒app,Android APP唤醒打开其他APP

    App(a):判断是否为App(b)是否存在,不存在选择下载 存在后台状态直接唤醒 否则直接打开 App(a)部分代码 if (checkPackage("com.xxx.android&q ...

  3. html a标签唤醒app,网页唤醒app、一个app唤醒另一个app

    网页唤醒app: 可以通过URL Schemes唤醒某个应用.具体schemes是什么,怎么理解,可自行百度,我觉得可以将它认为是某个应用的身份标识.当然,这个标识可能不是唯一的,因为人们可以自定义它 ...

  4. uniapp唤醒手机地图app

    H5唤醒手机app地图 // latitude longitude 要跳转地址的经纬度,name 要跳转地址的地名 uni.showActionSheet({title: '请选择系统中已安装的地图应 ...

  5. android强制分屏软件,oppo第三方强制分屏软件app,OPPO第三方强制分屏软件app安卓版预约 v1.0.0-手游汇...

    oppo第三方强制分屏软件app是一款专门为oppo手机的用户们提供的助手.安装之后可以享受到永久的免费服务,在任何的情况下都可以按照自己的想法进行,一边看剧一边游戏,为生活带来更多的科技感,所有想要 ...

  6. 阿里百川V6安全图,uniapp使用阿里百川SDK V6安全图唤醒淘宝APP 阿里百川新版本打开淘宝领券页面/渠道备案,uniapp对接淘宝联盟等等超级详细

    阿里百川V6安全图,uniapp使用阿里百川SDK V6安全图唤醒淘宝APP 阿里百川新版本打开淘宝领券页面/渠道备案,uniapp对接淘宝联盟等等超级详细 此文章是针对插件市场1.6版本升级的介绍 ...

  7. android 退出app代码_PPT 下载 | APP 埋点那些事

    本文内容根据神策大数据技术直播系列第一季第二讲<数据采集与埋点>整理而成,可在公众号后台回复[629技术直播],获取 PPT. ▼▼▼ 主持人(刘鑫):来到神策以后参与的一个项目,就是灼洲 ...

  8. iOS App 签名的原理 App 重签名(三)

    目录 iOS App 重签名 - 准备工作 iOS App 重签名 - 手动重签名 iOS App 重签名 - 使用脚本重签名 iOS App 重签名 - 使用 XCode 重签名 注意 iOS Ap ...

  9. 06- 移动端APP兼容性测试以及APP兼容性测试手机选择与云测试技术

    在开始测试APP之前,应该考虑什么问题?或者如何选择设备?多少部手机测试兼容性最佳? 兼容性测试手机数量:主测手机 1 ,2(根据人员),辅助测试手机:用于兼容性测试.(50-60台最佳,至少5-20 ...

最新文章

  1. FPGA之道(38)VHDL与Verilog的比较
  2. 2021云上架构与运维峰会12月10日线上开启,五大精彩看点不容错过
  3. 5分钟完成业务实时监控系统搭建,是一种什么样的体验?
  4. activiti搭建
  5. 拥抱.NET Core系列:依赖注入(2)
  6. luogu P1659 养猪 dp 好理解
  7. Qt工作笔记-Qt奇淫技巧把ToolBar改成标题栏
  8. wannafly-day1 Problem A - Birthday
  9. IT基础知识(精华版二)
  10. python拟合二元一次函数
  11. PTA数据结构-01-复杂度1 最大子列和问题
  12. MAC读取NTFS移动硬盘方法
  13. Do we need an operating system?
  14. 怎么把ppt弄成链接的形式_ppt链接excle表格:如何在ppt中超级链接到指定的excel工作表...
  15. 【BZOJ4826】【HNOI2017】影魔(线段树)
  16. VS2017 LINK : fatal error LNK1104: cannot open file ‘atls.lib‘错误解决方案
  17. android mysql 驱动_Java-使用com.mysql.jdbc.Driver的Android MySQL
  18. 大学计算机基础python第二次作业_python第二次作业
  19. rstudio的数据集怎么建立和保存_在R Studio中保存
  20. 虚拟机 Ubuntu16.04开机蓝屏问题

热门文章

  1. run mysql upgrade_MYSQL数据全库导入后提示运行mysql_upgrade
  2. Jmeter最新安装配置
  3. 分布式系列三: 对象序列化
  4. 【DDSCAT——离散偶极近似仿真程序05】模型设计Matlab代码:多核壳球 、多核壳圆柱
  5. DARPA2000超详细数据介绍
  6. linux unzip和zip,zip和unzip压缩与解压
  7. c# 调用系统默认图片浏览器打开图片
  8. 家庭财务软件的概要分析设计
  9. 最新大气精美茶叶商城网站源码+支持响应式/支付/分销功能
  10. Minitab极差分析