码迷,mamicode.com
首页 > 移动开发 > 详细

从第三方Launcher授权启动指定APP的设计与实现

时间:2015-06-02 15:22:05      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

Case 背景:

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

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

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

在用户首次开机或恢复出厂设置后开机,开机向导启动时,读取指定APP应用包名,并将应用包名的信息存储到数据库“android.provider.settings.system”表中,将所有的应用包名用“/”分隔开保存为一条记录,如“namecust_packagenames,valuecom.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的设计与实现

标签:

原文地址:http://blog.csdn.net/huangyabin001/article/details/46327825

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!