Case 背景:

Case要求从第三方Launcher中首次启动指定的应用程序时。弹出对话框提示用户进行授权启动,若用户未授权,则在下次再次启动该应用时依旧弹出对话框提示用户进行授权。直到用户相应用进行授权成功后,则再次启动时无需授权,直接启动。

那么从上面的描写叙述中。我们能够分两步来实现。首先Launcher来完毕对指定APP进行过滤启动,而我们在Framework层来完毕对指定APP的配置与解析。那么既然Case要求在Launcher中首次启动才弹出对话框提示,也就是说在用户首次开机或恢复出厂设置时要求用户对APP进行授权启动。

那么首次开机和恢复出厂设置首先启动的APP是开机向导,那么为了不影响系统总体性能,我们把对指定APP的配置放在开机向导中来完毕。最后总体的实现思路是这样来完毕对。

在用户首次开机或恢复出厂设置后开机。开机向导启动时,读取指定APP应用包名,并将应用包名的信息存储到数据库“android.provider.settings.system”表中。将全部的应用包名用“/”分隔开保存为一条记录。如“name为cust_packagenames,value为com.bill.test1/com.bill.test2/com.bill.test3”。

Launcher仅仅须要调用android.provider.Settings.System.getString(context.getContentResolver(), "cust_packagenames");就可以获取须要处理的apk包名。

用户从Launcher启动时指定APP时(如com.bill.test1)。Launcher側能够调用android.provider.Settings.System.getInt(context.getContentResolver(), "com.bill.test1", 0);来推断用户是否授权。假设数据库中没有相应key则会取默认值0;假设用户对此应用进行授权,Launcher側能够调用android.provider.Settings.System.getInt(context.getContentResolver(), "com.bill.test1", 1);来处理。

那么开机向导中是怎样实现app配置,并读取保存到数据库的呢?以下是完整源代码。有兴趣的读者能够进行參考。

Array.xml中加入代码:

  <string-array name="cust_apps_packagenames" translatable="false">
<item>com.bill.test1</item>
<item>com.bill.test2</item>
<item>com.bill.test3</item>
</string-array>

MainActivity.java中加入代码:

    @Override
public void onResume() {
super.onResume();
Xlog.d(TAG, "onResume");
String[] packageNames = getResources().getStringArray(
R.array.cust_apps_packagenames);
StringBuffer claro_packagenames = new StringBuffer();
for (String packagename : packageNames) {
claro_packagenames.append(packagename);
claro_packagenames.append("/");
}
android.provider.Settings.System.putString(getContentResolver(),"cust_packagenames", claro_packagenames.substring(0, claro_packagenames.length()-1));
}

从第三方Launcher授权启动指定APP的设计与实现的更多相关文章

  1. [Android]从Launcher开始启动App流程源码分析

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5017056.html 从Launcher开始启动App流程源码 ...

  2. .netcore第三方登录授权:10分钟急速接入

    前言 很多对外应用的开发都考虑接入第三方登录来提高用户的体验感,避免用户进行繁琐的注册登录(登录后的完善资料必不可免). 而QQ.微信.支付宝.淘宝.微博等应用就是首选目标(无他,用户群体大,支持发开 ...

  3. Visual Stuido 2010/2012 扩展:Quick Launcher,快速打开指定文件

    Visual Stuido 2010/2012 扩展:Quick Launcher,快速打开指定文件 Quick Launcher 是一个极其简单但实用的 Visual Studio 扩展,支持 Vi ...

  4. 5月第2周业务风控关注 | 央行:严禁未经授权认可的APP接入征信系统

    本文由  网易云发布. 易盾业务风控周报每周呈报值得关注的安全技术和事件,包括但不限于内容安全.移动安全.业务安全和网络安全,帮助企业提高警惕,规避这些似小实大.影响业务健康发展的安全风险. 1.央行 ...

  5. 解决微信公众号授权登录和开放平台微信第三方应用授权登录获取到的用户Openid关联问题

    开发背景: 最近一段时间一直在做关于微信方面的网站应用开发,这段时间也收获的不少关于微信开发方面的开发技能,接触的比较多的主要有微信公众号和微信网站app第三方登录授权,以及微信会员卡,优惠券和扫描二 ...

  6. 取之有道——巧用Root权限 启动其他APP中的Activity

    这次博主来分享一个很巧妙的办法来启动其他APP中Activity的方法. 首先说一下这样做的目的:最近博主在攻克一个技术难点,就是搞定某些三方系统中,对于应用权限的限制.为此给出用户指导,引导用户启动 ...

  7. 通过openURL的方式启动其它App

    假设有两个App,项目名分别是SampleA和SampleB,需要在SampleA里点击一个Button来启动SampleB,并传递一个字符串.具体实现步骤如下: 1. 在SampleB的info.p ...

  8. h5启动原生APP总结

    许久没有写博客了,最近有个H5启动APP原生页面的需求,中间遇上一些坑,看了些网上的实现方案,特意来总结下 一.需要判断客户端的平台以及是否在微信浏览器中访问 1.客户端判断 在启动APP时,Andr ...

  9. (appium+python)UI自动化_02_appium启动手机app

    前提:需先安装配置好appium+python自动化环境,已配置好环境的小伙伴可以参考以下步骤启动Android app,具体步骤如下: 一.USB连接手机 (1)手机USB连接电脑 (2)手机打开开 ...

随机推荐

  1. Jenkins使用SSH远程发布

    远程发布需要安装Publish Over SSH插件 比如我们的应用服务器都是通过tomcat用户启动程序,因此,在jenkin服务器上配置免密登录远程服务器tomcat用户 //生成密钥对 ssh- ...

  2. IDEA的Maven项目找不到class

  3. 8.6(java学习笔记)类加载过程及类加载器

    一.类加载 1.加载 将class字节码加载到内存中,同时在方法区形成改类运行时数据结构. 同时在堆中产生一个Class对象,反射就是获取这个对象并对其进行操作. 2.链接 2.1验证:验证加载的类信 ...

  4. hdu4565之矩阵快速幂

    So Easy! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  5. Error: Top-level design entity "dff" is undefined

    原因是:在quartus库文件里面已将dff定义了,要是找使用这个名字重命名了,因而需要重新命名为其他的名字.

  6. 【InteillJ IDEA】Git的安装+同步项目到GitHub上

    需要的工具: 1.InteillJ IDEA 2.Git 3.GitHub帐号 步骤: 1.下载Git 下载地址:https://git-scm.com/downloads 安装完成后 勾选Launc ...

  7. Android Studio打包:“APP_NAME" IS NOT TRANSLATED IN ZH, ZH_CN……..解决办法

    开始用Android Studio更新到2.0稳定版,调试的时候没啥问题,在打包的时候出现了"app_name" is not translated in zh, zh_CN….. ...

  8. Kubernetes连接外部数据源

    Kubernetes架构下比较核心的问题是数据如何persistance,虽然提供了Persistent volumn的方式,但是对于像数据库之类的产品在kubernetes集群环境中运行和管理还是很 ...

  9. Snapdragon profiler连android手机

    oppo11 晓龙660 找一根好用的usb数据线 去设置->开发者选项->usb调试 打开(十分钟会自动关,注意再开开) 去windows cmd ===adb devices 会列出这 ...

  10. 2017.10.25 es-sql分页无效

    1.问题描述 使用es-sql聚合查询时,发现无法进行分页操作. 结果为16条: 当使用limit语法进行分页之后,发现并没有效果(以取5条记录为一页为例). 首先查询前5条记录: 返回的记录如下图: ...