Android 8.1.0 之在 Settings 中隐藏指定的应用信息

        之所以会有这个需求,是因为之前做过在 Launcher3 中隐藏应用图标。之前虽然在 Launcher 中隐藏了应用图标,但是依次点击 "设置  -  应用和通知  -  查看所有的应用" ,还是可以看到这些被隐藏掉应用图标的应用信息,所以我们还得在这里做一下过滤:在显示所有应用的时候,按照应用的包名,把需要隐藏的应用给过滤掉。主要是修改下面:

apps/Settings/res/values/arrays.xml

apps/Settings/src/com/android/settings/applications/ManageApplications.java

        首先,在 apps/Settings/res/values/arrays.xml 中添加上需要隐藏的应用的包名:

    <!-- List of applications package names that need to be hidden in the Settings application. -->
	
    <string-array name="package_name">
        <item>com.android.apkinstaller</item>  <!-- Apkinstaller application -->
        <item>org.chromium.webview_shell</item><!-- Webview application -->
        <item>com.android.calendar</item>      <!-- Calendar application -->
        <item>com.android.quicksearchbox</item><!-- Search application -->
        <item>android.rk.RockVideoPlayer</item><!-- VideoPlayer application -->
        <item>com.android.contacts</item>      <!-- Contacts application -->
        <item>com.android.rk</item>            <!-- Explorer application -->
        <item>com.android.music</item>         <!-- Music application -->
        <item>com.android.documentsui</item>   <!-- Files application -->
        <item>com.tencent.mobileqq</item>      <!-- QQ application -->
        <item>teaonly.rk.droidipcam</item>     <!-- HDMI IN application -->
    </string-array>

这样当我们加载使用这些资源时,只需要

String[] stringPackageNameArray = context.getResources().getStringArray(R.array.package_name);

然后修改 apps/Settings/src/com/android/settings/applications/ManageApplications.java 。经过查看,发现这个类中声明了两个List 去保存所有的应用信息:

        private ArrayList<ApplicationsState.AppEntry> mBaseEntries;
        private ArrayList<ApplicationsState.AppEntry> mEntries;

所以对应的,我们需要调用过滤方法,对这两个 List 都过滤一遍包名。过滤方法如下:

   /**
	
     * Filter out apps by package name that don't need to be displayed in Application list.
	
     * @param context Context.
	
     * @param tempList ArrayList<ApplicationsState.AppEntry>.
	
     * @return targetList.
	
     */
	
    private ArrayList excludeApplications(Context context ,ArrayList<ApplicationsState.AppEntry> tempList){
        ArrayList targetList = tempList;
        Log.d("exclude","targetList size is ->" + targetList.size());
        //Get package name array
        String[] stringPackageNameArray = context.getResources().
                getStringArray(R.array.package_name);
        if (stringPackageNameArray.length != 0){
            //Traversing package name array
            for (String packageName : stringPackageNameArray){
                //Comparison
                if (tempList != null && tempList.size() != 0){
                    for (int i = 0 ; i < tempList.size() ; i++ ){
                        String name = tempList.get(i).info.packageName;
                        if (!TextUtils.isEmpty(name) && packageName.equals(name)){
                            tempList.remove(i);
                        }
                    }
                    targetList = tempList;
                    Log.d("exclude","targetList size is ->>" + targetList.size());
                }
            }
            Log.d("exclude","targetList size is ->>>" + targetList.size());
        }
        return targetList;
    }

好了,就是这些。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值