当前位置: 首页 > news >正文

镇江方圆建设监理咨询有限公司网站对网络营销的认识

镇江方圆建设监理咨询有限公司网站,对网络营销的认识,做美团一样的网站需要多少钱,网站导航栏代码Android 运维技巧 系列目录 系统App 签名JKS制作及静默安装App拉起另一个AppAndroid 开机动画的制作 App拉起另一个App前言分析及效果图App拉起方式拉起流程总结博客创建时间:2021.04.06 博客更新时间:2021.07.08 以Android studio build4.1.3&#xf…

Android 运维技巧 系列目录

  1. 系统App 签名JKS制作及静默安装
  2. App拉起另一个App
  3. Android 开机动画的制作

App拉起另一个App

  • 前言
  • 分析及效果图
  • App拉起方式
  • 拉起流程
  • 总结

博客创建时间:2021.04.06
博客更新时间:2021.07.08

以Android studio build=4.1.3,gradle=6.5,SdkVersion 30来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已


前言

App拉起另一个App的使用场景:

  1. 使用一个管理型App统一进行app的管理。如:可以应用于登录,然后拉起对应App,如未安装则进行安装。

  2. 对于智能硬件app,很多运行环境处于无网络情况,出现异常及崩溃后log无法采集,也无法重新现崩溃情景。此时应该先保持app崩溃后能重新自动重启。

    此时可以用一看门狗app监测管理产品app,一旦发现软件App不在运行则拉起软件App,对于异常则后面专项检测解决。

今天主要讲解第2种情景中的app拉起。

分析及效果图

需求分析

  1. 看门狗App A实时监测软件App B的运行状态,其实是监测包名com.b…
  2. 如果B异常退出或被卸载,则A监测到B的运行状态异常,进行后续操作
  3. 如果B被卸载了,则提示进行下载安装
  4. 如果B已安装只是异常退出,则重新拉起B。

效果图
在这里插入图片描述


App拉起方式

常见的APP拉起方式有如下几种:

1. 根据包名、Activity名拉起
拉起的不一定是启动页,也有可能是其他Activity

    /*** 根据包名、Activit来拉起App* 此方式拉起的App在原程序运行,不会再单独开启一个app应用** @param activity 调用者Activity* @param pkgName      包名* @param acName   要拉起的Activity名,*/fun pullUpByPackage(activity: Activity, pkgName: String, acName: String) {val intent = Intent(Intent.ACTION_MAIN)// 知道要跳转应用的包命与目标Activityval componentName = ComponentName(pkgName, acName)intent.component = componentName// 这里Intent传值intent.putExtra("key", "value")activity.startActivity(intent)}

2. 仅根据包名拉起App

拉起的肯定是启动页

    /*** 仅仅通过包名进行调用,拉起的是启动页* @param activity 调用者Activity* @param pkgName  包名*/fun pullUpOnlyPackage(activity: Activity, pkgName: String) {val intent: Intent? = activity.packageManager.getLaunchIntentForPackage(pkgName)if (intent != null) {intent.putExtra("type", "110")intent.flags = Intent.FLAG_ACTIVITY_NEW_TASKactivity.startActivity(intent)}}

3. 根据URL拉起App

 /*** 根据URL拉起App*** @param activity 调用者Activity* @param uriString  Uri地址 如 "csd://com.xuanyuan.pullup/cyn?type=110"**/fun pullUpByUri(activity: Activity, uriString: String) {val intent = Intent()intent.data = Uri.parse(uriString)//这里Intent当然也可传递参数,但是一般情况下都会放到上面的URL中进行传递intent.putExtra("type", "100")intent.flags = Intent.FLAG_ACTIVITY_NEW_TASKactivity.startActivity(intent)}

根据Uri拉起的方式一定要注意,在manifest文件间需要配置如下,如果是在启动Activity中,则置于原有之下即可。

     * <intent-filter>*  <data*      android:host="pull.csd.demo"*      android:path="/cyn"*      android:scheme="csd" />**      <action android:name="android.intent.action.VIEW" />*      <category android:name="android.intent.category.DEFAULT" />*      <category android:name="android.intent.category.BROWSABLE" />* </intent-filter>

对于要拉起的Activity需注意:

  1. manifest文件对应Activity 添加 android:exported=“true”
  2. 不添加exported="true"则无法找到该Activity
  3. intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK的设置与否,决定拉起的App是否在新进程中运行

拉起流程

  1. 对程序B进行检测,每隔固定时间如20s进行监测,不在前台运行则进行拉起。
      Observable.interval(20, TimeUnit.SECONDS).subscribeOn(Schedulers.io())
//            .observeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
  1. 判定程序B是否已安装
    /*** 检查应用packageName 是否存在** @return true:存在 ,false:不存在*/fun checkPackInfo(packageName: String, context: Context): Boolean {var packageInfo: PackageInfo? = nulltry {packageInfo = context.packageManager.getPackageInfo(packageName, 0)} catch (e: PackageManager.NameNotFoundException) {e.printStackTrace()}return packageInfo != null}
  1. 如果程序B不存在,进行下载操作提示
Toast.makeText(context, "需要拉起的软件还未安装,请先下载!", Toast.LENGTH_LONG).show()
  1. 如果程序B已安装,判断程序A是否是前台程序,如果是则说明程序B已异常退出,需要拉起B
    val isForeground = isForeground(pkgContext)pkgContext?.let { isRun(it, pkgName) }//3. 如果A正在前台运行,则说明程序B已经退出了if (isForeground) {//1. 启动方式1return openPackage(context, pkgName)

总结

对于App A拉起App B的源码已发布在Github中,请下载查看。

程序A地址:https://gitee.com/luofaxin/AppPullUp.git或https://github.com/l424533553/AppPullUp.git

程序B地址:https://gitee.com/luofaxin/AppPullUpClient.git或https://github.com/l424533553/AppPullUpClient.git


相关链接

  1. 系统App 签名JKS制作及静默安装
  2. App拉起另一个App
  3. Android 开机动画的制作

扩展链接:

  1. LiveData原理深入浅出,透过源码看本质
  2. Android 今日头条屏幕适配详细使用攻略
  3. Lottie动画 轻松使用

博客书写不易,您的点赞收藏是我前进的动力,千万别忘记点赞、 收藏 ^ _ ^ !

http://www.lbrq.cn/news/2688913.html

相关文章:

  • wordpress 目录权限管理指定关键词排名优化
  • 当地政府网站建设问卷调查自己做一个网站需要什么
  • 二级域名网站建设百度竞价代运营托管
  • 免费帮助建站营销网络是啥意思
  • 佛山网站设计建设网络营销策略概念
  • 网站快速收录软件云搜索网页版入口
  • 做网站帮外国人淘宝crm系统网站
  • 网站推广公司兴田德润在哪里上海最新疫情
  • 做网站服务器和域名2022黄页全国各行业
  • 90做网站整合营销传播名词解释
  • 交互设计师郑州网站建设推广优化
  • 手机网站这么做链接网站关键词如何优化
  • 制作音乐appseo咨询顾问
  • 做网站市场价seo优化主要做什么
  • 淘客类网站如何做排名指数是什么
  • 企业网站对企业有什么好处沙坪坝区优化关键词软件
  • 自己做网站制作教程最近一周新闻热点回顾
  • 网站做记录访客故事式软文范例500字
  • 专业设计网站推荐螺蛳粉营销策划方案
  • 东莞厚街有什么好玩的地方seo实战培训费用
  • 广东品牌女装都有哪些品牌seo关键技术有哪些
  • jsp网站开发实例标题栏江西seo推广方案
  • 中建铁路建设有限公司网站短视频营销常用平台有
  • 网站测试软件广告软文范例
  • 正品海外购网站有哪些怎样和政府交换友链
  • 做网站首页的尺寸专业整站优化
  • 云职上海企业服务有限公司做网络优化的公司排名
  • 做网站图片分辨率优化是什么意思?
  • 一站式网站建设与运营风云榜小说排行榜
  • 电子产品网站建设 实训报告南京seo排名优化
  • 升级Gradle版本后,安卓点击事件使用了SwitchCase的情况下,报错无法使用的解决方案
  • 浅谈TLS 混合密钥交换:后量子迁移过渡方案
  • 深入剖析 React 合成事件:透过 onClick 看本质
  • 熟悉并使用Spring框架 - 注解篇
  • Android 项目:画图白板APP开发(一)——曲线优化、颜色、粗细、透明度
  • 医美产业科技成果展陈中心:连接微观肌肤世界与前沿科技的桥梁