Small optimization in EclairChecker
This commit is contained in:
		
							parent
							
								
									1d025c1e7d
								
							
						
					
					
						commit
						06253a94cf
					
				| @ -20,6 +20,7 @@ | ||||
| package org.fdroid.fdroid; | ||||
| 
 | ||||
| import java.util.HashMap; | ||||
| import java.util.HashSet; | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| @ -28,6 +29,7 @@ import java.util.Vector; | ||||
| import android.content.ContentValues; | ||||
| import android.content.Context; | ||||
| import android.content.SharedPreferences; | ||||
| import android.content.pm.FeatureInfo; | ||||
| import android.content.pm.PackageInfo; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.database.Cursor; | ||||
| @ -191,9 +193,13 @@ public class DB { | ||||
|         // Call isCompatible(apk) on an instance of this class to | ||||
|         // check if an APK is compatible with the user's device. | ||||
|         public static abstract class CompatibilityChecker { | ||||
| 
 | ||||
|             // Because Build.VERSION.SDK_INT requires API level 5 | ||||
|             protected final static int SDK_INT | ||||
|                 = Integer.parseInt(Build.VERSION.SDK); | ||||
| 
 | ||||
|             public abstract boolean isCompatible(Apk apk); | ||||
| 
 | ||||
|             public static CompatibilityChecker getChecker(Context ctx) { | ||||
|                 CompatibilityChecker checker; | ||||
|                 if (SDK_INT >= 5) | ||||
| @ -204,25 +210,32 @@ public class DB { | ||||
|                       + SDK_INT + ": " + checker.getClass().getName()); | ||||
|                 return checker; | ||||
|             } | ||||
|             public abstract boolean isCompatible(Apk apk); | ||||
|         } | ||||
| 
 | ||||
|         private static class BasicChecker extends CompatibilityChecker { | ||||
|             public boolean isCompatible(Apk apk) { | ||||
|                 return (apk.minSdkVersion <= SDK_INT); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private static class EclairChecker extends CompatibilityChecker { | ||||
|             private PackageManager pm; | ||||
| 
 | ||||
|             private HashSet features; | ||||
| 
 | ||||
|             public EclairChecker(Context ctx) { | ||||
|                 pm = ctx.getPackageManager(); | ||||
|                 PackageManager pm = ctx.getPackageManager(); | ||||
|                 features = new HashSet(); | ||||
|                 for (FeatureInfo fi : pm.getSystemAvailableFeatures()) { | ||||
|                     features.add(fi.name); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             public boolean isCompatible(Apk apk) { | ||||
|                 if (apk.minSdkVersion > SDK_INT) | ||||
|                     return false; | ||||
|                 if (apk.features != null) { | ||||
|                     for (String feat : apk.features) { | ||||
|                         if (!pm.hasSystemFeature(feat)) | ||||
|                             return false; | ||||
|                         if (!features.contains(feat)) return false; | ||||
|                     } | ||||
|                 } | ||||
|                 return true; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Henrik Tunedal
						Henrik Tunedal