android4过滤设置中能显示的应用

安卓过CTA认证对app的需求

安卓4.4系统, 过CTA入网认证,桌面只有7个应用,在设置–应用–全部中显示的除了桌面的还有后台的几十个应用,
实验室要求只保留显示桌面上的应用,安卓8没有这个问题。

源码定位

  1. 首先定位设置的源码目录packages/apps/Settings/,
  2. 然后在些目录下搜索UI上的关键字,比如应用列表分类,定位到应用这个界面的源码
    packages/apps/Settings/src/com/android/settings/applications/ManageAppSettings.java
  3. 顺藤摸瓜找到具体实现ManageApplications.java的rebuild函数
  4. 最后是定位到ApplicationsState.java,修改它,根据包名做过滤,如果是系统应用则判断是否是自己要的桌面上的几个应用。

代码实现

diff --git a/packages/apps/Settings/src/com/android/settings/applications/ApplicationsState.java b/packages/apps/Settings/src/com/android/settings/applications/ApplicationsState.java
index 9ea552d..d086dd8 100644
--- a/packages/apps/Settings/src/com/android/settings/applications/ApplicationsState.java
+++ b/packages/apps/Settings/src/com/android/settings/applications/ApplicationsState.java
@@ -612,6 +612,10 @@ public class ApplicationsState {
             if (DEBUG) Log.i(TAG, "Rebuilding...");
             for (int i=0; i<apps.size(); i++) {
                 ApplicationInfo info = apps.get(i);
+                if (needHideForCta(mContext, info)) {
+                    Log.i(TAG, "ignore:" + info.packageName);
+                    continue;
+                }
                 if (filter == null || filter.filterApp(info)) {
+                if (needHideForCta(mContext, info)) {
+                    Log.i(TAG, "ignore:" + info.packageName);
+                    continue;
+                }
                 if (filter == null || filter.filterApp(info)) {
                     synchronized (mEntriesMap) {
                         if (DEBUG_LOCKING) Log.v(TAG, "rebuild acquired lock");
@@ -1116,4 +1120,43 @@ public class ApplicationsState {
         }
     };
     /* @} */
+
+
+    private boolean needHideForCta(Context context, ApplicationInfo info) {
+        // cta认证设置--应用, 系统应用只显示桌面的几个应用及SOS与SIM卡工具包
+        String[] desktopPackages = {
+                "com.android.dialer",
+                "com.android.settings",
+                "com.android.contacts",
+                "com.android.gallery3d",
+                "com.spreadst.security.permission",
+                "com.sprd.practicaltools",
+                "com.sprd.fileexplorer",
+                "com.android.sos",
+                "com.android.stk"
+        };
+        if (isSystemApplication(context, info.packageName)) {
+            for (int i = 0; i < desktopPackages.length; ++i) {
+                if (info.packageName.equals(desktopPackages[i])) {
+                    return false;
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+
+    public static boolean isSystemApplication(Context context, String packageName){
+        PackageManager mPackageManager = context.getPackageManager();
+        try {
+            final PackageInfo packageInfo = mPackageManager.getPackageInfo(packageName, PackageManager.GET_CONFIGURATIONS);
+            if((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)!=0){
+                return true;
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+        return false;
+    }

CTA 认证的注意事项

  1. 提前了解认证要求
    企业在开发通信产品时,应提前了解 CTA 认证的相关要求和标准,确保产品设计符合认证要求。
    可以参考国家相关标准和认证机构的认证指南,避免在认证过程中出现不必要的问题。
  2. 选择正规认证机构
    CTA 认证应由国家认可的认证机构进行,企业应选择正规、专业的认证机构,确保认证结果的权威性和可信度。
    可以通过查询认证机构的资质、口碑等方面进行选择。
  3. 准备充分的申请材料
    企业在申请 CTA 认证时,应准备充分的申请材料,包括产品技术资料、测试报告、质量管理体系文件等。
    申请材料应真实、准确、完整,以便认证机构进行审核和测试。
  4. 关注认证周期
    CTA 认证的周期通常较长,企业应提前规划认证时间,避免因认证周期过长影响产品的上市时间。
    可以与认证机构沟通,了解认证进度,及时解决认证过程中出现的问题。

作者:帅得不敢出门 谢绝转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值