|
4 | 4 | import android.content.Context;
|
5 | 5 | import android.content.Intent;
|
6 | 6 | import android.content.pm.PackageInfo;
|
| 7 | +import android.content.pm.PackageManager; |
7 | 8 | import android.content.res.Resources;
|
8 | 9 | import android.os.Bundle;
|
9 | 10 |
|
@@ -75,7 +76,7 @@ public class PluginDescriptor implements Serializable {
|
75 | 76 |
|
76 | 77 | private transient Bundle metaData;
|
77 | 78 |
|
78 |
| -private HashMap<String, String> metaDataString = new HashMap<String, String>(); |
| 79 | +private HashMap<String, Object> metaDataObject = new HashMap<String, Object>(); |
79 | 80 | private HashMap<String, Integer> metaDataResource = new HashMap<String, Integer>();
|
80 | 81 | private HashMap<String, String> metaDataTobeInflate = new HashMap<String, String>();
|
81 | 82 |
|
@@ -134,7 +135,7 @@ public class PluginDescriptor implements Serializable {
|
134 | 135 |
|
135 | 136 | private ArrayList<String> muliDexList;
|
136 | 137 |
|
137 |
| -private transient HashMap<Integer, PackageInfo> packageInfoHashMap; |
| 138 | +private transient HashMap<Object, PackageInfo> packageInfoHashMap; |
138 | 139 |
|
139 | 140 | //=============getter and setter======================
|
140 | 141 |
|
@@ -256,11 +257,20 @@ public static void inflateMetaData(PluginDescriptor descriptor, Resources plugin
|
256 | 257 | //todo cailiming bugfix metadata需要按manifest中的节点分开存储,不能合并成一个大bundle
|
257 | 258 | descriptor.setMetaData(metaData);
|
258 | 259 |
|
259 |
| -Iterator<Map.Entry<String, String>> strItr = descriptor.getMetaDataString().entrySet().iterator(); |
| 260 | +Iterator<String> strItr = descriptor.getMetaDataObject().keySet().iterator(); |
260 | 261 | while(strItr.hasNext()) {
|
261 |
| -Map.Entry<String, String> entry = strItr.next(); |
262 |
| -LogUtil.d(entry.getKey(), entry.getValue()); |
263 |
| -metaData.putString(entry.getKey(), entry.getValue()); |
| 262 | +String key = strItr.next(); |
| 263 | +Object value = descriptor.getMetaDataObject().get(key); |
| 264 | +LogUtil.d(key, value); |
| 265 | +if (value instanceof Boolean) { |
| 266 | +metaData.putBoolean(key, (Boolean) value); |
| 267 | +} else if (value instanceof Float) { |
| 268 | +metaData.putFloat(key, (Float) value); |
| 269 | +} else if (value instanceof Integer) { |
| 270 | +metaData.putInt(key, (Integer) value); |
| 271 | +} else if (value instanceof String) { |
| 272 | +metaData.putString(key, (String) value); |
| 273 | +} |
264 | 274 | }
|
265 | 275 |
|
266 | 276 | Iterator<Map.Entry<String, Integer>> resItr = descriptor.getMetaDataResource().entrySet().iterator();
|
@@ -327,12 +337,12 @@ public void setMetaData(Bundle metaData) {
|
327 | 337 | this.metaData = metaData;
|
328 | 338 | }
|
329 | 339 |
|
330 |
| -public HashMap<String, String> getMetaDataString() { |
331 |
| -return metaDataString; |
| 340 | +public HashMap<String, Object> getMetaDataObject() { |
| 341 | +return metaDataObject; |
332 | 342 | }
|
333 | 343 |
|
334 |
| -public void setMetaDataString(HashMap<String, String> metaDataString) { |
335 |
| -this.metaDataString = metaDataString; |
| 344 | +public void setMetaDataObject(HashMap<String, Object> metaDataObj) { |
| 345 | +this.metaDataObject = metaDataObj; |
336 | 346 | }
|
337 | 347 |
|
338 | 348 | public HashMap<String, Integer> getMetaDataResource() {
|
@@ -710,13 +720,17 @@ private static ArrayList<String> findClassNameByIntent(Intent intent, HashMap<St
|
710 | 720 | return null;
|
711 | 721 | }
|
712 | 722 |
|
713 |
| -public PackageInfo getPackageInfo(Integer flags) { |
| 723 | +public PackageInfo getPackageInfo(Object flags) { |
714 | 724 | if (packageInfoHashMap == null) {
|
715 | 725 | packageInfoHashMap = new HashMap<>();
|
716 | 726 | }
|
717 | 727 | PackageInfo packageInfo = packageInfoHashMap.get(flags);
|
718 | 728 | if (packageInfo == null) {
|
719 |
| -packageInfo = FairyGlobal.getHostApplication().getPackageManager().getPackageArchiveInfo(getInstalledPath(), flags); |
| 729 | +if (flags instanceof Integer) { |
| 730 | +packageInfo = FairyGlobal.getHostApplication().getPackageManager().getPackageArchiveInfo(getInstalledPath(), (int)flags); |
| 731 | +} else { |
| 732 | +packageInfo = FairyGlobal.getHostApplication().getPackageManager().getPackageArchiveInfo(getInstalledPath(), PackageManager.PackageInfoFlags.of((long)flags)); |
| 733 | +} |
720 | 734 | if (packageInfo != null && packageInfo.applicationInfo != null) {
|
721 | 735 | packageInfo.applicationInfo.sourceDir = getInstalledPath();
|
722 | 736 | packageInfo.applicationInfo.publicSourceDir = getInstalledPath();
|
|
0 commit comments