zoukankan      html  css  js  c++  java
  • 从第三方Launcher授权启动指定APP的设计与实现

    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));
        }



  • 相关阅读:
    jProfiler远程连接Linux监控jvm的运行状态
    Linux性能监控分析命令(五)—free命令介绍
    Linux性能监控分析命令(三)—iostat命令介绍
    Python编程练习题学习汇总
    OSPF与ACL综合应用实验
    ACL基础知识点总结
    NAT基础知识点
    VLAN实验五:利用三层交换机实现VLAN间路由
    VLAN实验四:利用单臂路由实现VLAN间路由
    VLAN实验三:理解Hybrid接口
  • 原文地址:https://www.cnblogs.com/llguanli/p/6800348.html
Copyright © 2011-2022 走看看