安卓过CTA认证对app的需求
安卓4.4系统, 过CTA入网认证,桌面只有7个应用,在设置–应用–全部中显示的除了桌面的还有后台的几十个应用,
实验室要求只保留显示桌面上的应用,安卓8没有这个问题。
源码定位
- 首先定位设置的源码目录packages/apps/Settings/,
- 然后在些目录下搜索UI上的关键字,比如应用列表分类,定位到应用这个界面的源码
packages/apps/Settings/src/com/android/settings/applications/ManageAppSettings.java - 顺藤摸瓜找到具体实现ManageApplications.java的rebuild函数
- 最后是定位到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 认证的注意事项
- 提前了解认证要求
企业在开发通信产品时,应提前了解 CTA 认证的相关要求和标准,确保产品设计符合认证要求。
可以参考国家相关标准和认证机构的认证指南,避免在认证过程中出现不必要的问题。 - 选择正规认证机构
CTA 认证应由国家认可的认证机构进行,企业应选择正规、专业的认证机构,确保认证结果的权威性和可信度。
可以通过查询认证机构的资质、口碑等方面进行选择。 - 准备充分的申请材料
企业在申请 CTA 认证时,应准备充分的申请材料,包括产品技术资料、测试报告、质量管理体系文件等。
申请材料应真实、准确、完整,以便认证机构进行审核和测试。 - 关注认证周期
CTA 认证的周期通常较长,企业应提前规划认证时间,避免因认证周期过长影响产品的上市时间。
可以与认证机构沟通,了解认证进度,及时解决认证过程中出现的问题。
作者:帅得不敢出门 谢绝转载