From dfb73724d63dc2b7b97bbeac1f355865965505f4 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 5 Aug 2020 12:26:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=96=B9=E5=BC=8F=E8=BF=87=E6=BB=A4=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=88=97=E8=A1=A8=EF=BC=9A/storage/emulated/0/MOGO/packagesFil?= =?UTF-8?q?terList.txt=20=E6=A0=BC=E5=BC=8F=EF=BC=9A=E6=AF=8F=E4=B8=80?= =?UTF-8?q?=E8=A1=8C=E4=BB=A3=E8=A1=A8=E4=B8=80=E4=B8=AA=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E7=9A=84=E5=8C=85=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/apps/AppFilterImpl.java | 37 +++++++++++++++++++ .../com/mogo/module/apps/model/AppsModel.java | 11 +++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppFilterImpl.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppFilterImpl.java index 78e4320bbd..50f07e1d11 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppFilterImpl.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppFilterImpl.java @@ -3,9 +3,15 @@ package com.mogo.module.apps; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; +import android.text.TextUtils; import com.mogo.module.common.utils.CarSeries; +import com.mogo.utils.FileUtils; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -21,6 +27,8 @@ public class AppFilterImpl implements AppFilter { private final Context mContext; private List< String > mFilterPackages; + private static String sExternalPath = "/storage/emulated/0/MOGO/packagesFilterList.txt"; + private static List< String > sExternalConfigPackages = new ArrayList<>(); public AppFilterImpl( Context context ) { mContext = context; @@ -42,6 +50,9 @@ public class AppFilterImpl implements AppFilter { // if ( isSystemApp( packageInfo ) ) { // return true; // } + if ( isInExternalFilter( packageInfo ) ) { + return true; + } if ( isFilterPackages( packageInfo ) ) { return true; } @@ -63,4 +74,30 @@ public class AppFilterImpl implements AppFilter { return mContext.getPackageManager().getLaunchIntentForPackage( packageInfo.packageName ) == null; } + private boolean isInExternalFilter( PackageInfo packageInfo ) { + return sExternalConfigPackages.contains( packageInfo.packageName ); + } + + public static void loadExternalFilterPackagesList() throws Exception { + sExternalConfigPackages.clear(); + File file = new File( sExternalPath ); + if ( !file.exists() || file.length() == 0 ) { + return; + } + FileInputStream fis = new FileInputStream( file ); + InputStreamReader isr = new InputStreamReader( fis ); + BufferedReader br = new BufferedReader( isr ); + String line = ""; + while ( ( line = br.readLine() ) != null ) { + line = line.trim(); + if ( TextUtils.isEmpty( line ) ) { + continue; + } + sExternalConfigPackages.add( line ); + } + br.close(); + isr.close(); + fis.close(); + } + } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java index 61c55a981d..4463a9e69c 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java @@ -1,10 +1,8 @@ package com.mogo.module.apps.model; import android.content.Context; -import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.text.TextUtils; @@ -12,6 +10,7 @@ import com.mogo.module.apps.AppFilter; import com.mogo.module.apps.AppFilterImpl; import com.mogo.module.apps.AppsConst; import com.mogo.module.apps.AppsListChangedLiveData; +import com.mogo.utils.logger.Logger; import java.util.ArrayList; import java.util.HashMap; @@ -26,6 +25,8 @@ import java.util.concurrent.atomic.AtomicBoolean; * 加载并保存 app 列表 */ public class AppsModel { + + private static final String TAG = "AppsModel"; private static volatile AppsModel sInstance; private Context mContext; @@ -72,6 +73,12 @@ public class AppsModel { if ( mAppFilter == null ) { mAppFilter = new AppFilterImpl( mContext ); } + try { + AppFilterImpl.loadExternalFilterPackagesList(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + e.printStackTrace(); + } final PackageManager packageManager = mContext.getPackageManager(); List< PackageInfo > packages = packageManager.getInstalledPackages( 0 ); int counter = 0;