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. 简单DP【p3399】丝绸之路

    Background 张骞于公元前138年曾历尽艰险出使过西域.加强了汉朝与西域各国的友好往来.从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他们越过崇山峻岭,将中国的先进技术带向中亚.西亚和欧洲 ...

  2. 洛谷——P1134 阶乘问题

    P1134 阶乘问题 题目描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 ...

  3. SD 一轮集训 day1 carcar

    可以发现每条边只能选一次或者两次,并且最后每个点的度数(∑邻接边选的次数和)都是偶数(代表有欧拉回路). 然后根据题意列一个 n 行 m+1 列的01矩阵,每一行代表一个异或方程组(每个点的度数是偶数 ...

  4. 【分块】【线段树】bzoj3212 Pku3468 A Simple Problem with Integers

    线段树入门题…… 因为poj原来的代码莫名RE,所以丧病地写了区间修改的分块…… 其实就是块上打标记,没有上传下传之类. #include<cstdio> #include<cmat ...

  5. Linq中比较日期大小(部分比较)

    问题:Linq中比较两个时间的年月日部分 表中某个字段的时间和系统时间比较大小(只比较年月日) 思路一:转换成字符串比较 var queryable = dbContext.Table .Where( ...

  6. 简述es6各种简单方法

    1.取代var的let和const 局部变量都可以使用let 固定变量都可以使用const 2.字符串的变化 反引号的使用 3.解构赋值 let [a, b, c] = [1, 2, 3]; let ...

  7. 所见即所得的网页设计工具 Macaw

    所见即所得的网页设计工具 Macaw: 2014年最具前景的12款创新产品 1\   http://macaw.co/ 2\   http://www.kickstarter.com/projects ...

  8. fl2440 platform总线button字符设备驱动

    驱动程序: #include "s3c_driver.h" #define DRV_DESC "S3C24XX button driver" /* Driver ...

  9. Fillrate

    http://xionggf.com/articles/graphic/misc/mobile_gpu_term.html IMR Immediate Mode Rendering 立即渲染模式 TB ...

  10. javascript数据类型检测方法

    一.字符串.数字.布尔值.undefined的最佳选择市使用 typeof 运算符进行检测: 对于字符串,typeof 返回"string" 对于数字,typeof 返回" ...