从第三方Launcher授权启动指定APP的设计与实现
2017-05-03 09:49
309 查看
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中加入代码:
MainActivity.java中加入代码:
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的设计与实现
- android实现QQ游戏大厅一样的启动第三方APP
- 实现app第三方QQ授权登录
- 第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 第三方APP微信登陆时无法调起授权页面的终极坑
- Android编程实现启动另外的APP及传递参数的方法
- Android实现不重复启动APP的方法android:alwaysRetainTaskState = true
- Java+Selenium3框架设计准备篇2-TestNG通过变量实现启动不同浏览器测试
- iOS纯Autolayout实现微信朋友圈和通讯录另附App启动页短视频效果
- Android实现开机自动启动APP
- android设计 实现窗体启动时,显示一个水平进度条,当进行完成后,隐藏该进度条,并显示一张图 片。
- android如何实现开机自动启动Service或app(转)
- Android 启动另一个App/apk中的Activity实现代码
- android如何实现开机自动启动Service或app
- Ecshop实现微信第三方授权扫码登录
- 基于授权和角色的访问控制的设计和实现(一)
- iOS App 中,需要绑定微博、Twitter、Flickr 等第三方平台账号时,用 OAuth 授权
- 启动第三方app(百度地图)No Activity found to handle Intent
- 【Android】透明状态栏在App中的实现与接口设计
- iOS 一个app跳转另一个app并实现通信(如A跳到B并打开B中指定页面)