Skip to content

Commit dae0f16

Browse files
committed
merge from experiment branch
1 parent 9a7bc52 commit dae0f16

20 files changed

+3799
-3136
lines changed

PlugLoadDemo/AndroidManifest.xml

Lines changed: 102 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,84 @@
33
package="androidx.plmgrdemo"
44
android:versionCode="1"
55
android:versionName="1.0" >
6-
6+
<uses-feature android:name="android.hardware.camera" android:required="false">
7+
</uses-feature>
8+
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false">
9+
</uses-feature>
10+
<uses-feature android:name="android.hardware.bluetooth" android:required="false">
11+
</uses-feature>
12+
<uses-feature android:name="android.hardware.location" android:required="false">
13+
</uses-feature>
14+
<uses-feature android:name="android.hardware.location.gps" android:required="false">
15+
</uses-feature>
16+
<uses-feature android:name="android.hardware.location.network" android:required="false">
17+
</uses-feature>
18+
<uses-feature android:name="android.hardware.microphone" android:required="false">
19+
</uses-feature>
20+
<uses-feature android:name="android.hardware.telephony" android:required="false">
21+
</uses-feature>
22+
<uses-feature android:name="android.hardware.touchscreen" android:required="false">
23+
</uses-feature>
24+
<uses-feature android:name="android.hardware.wifi" android:required="false">
25+
</uses-feature>
26+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
27+
</uses-permission>
28+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION">
29+
</uses-permission>
30+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
31+
</uses-permission>
32+
<uses-permission android:name="android.permission.CAMERA">
33+
</uses-permission>
34+
<uses-permission android:name="android.permission.GET_TASKS">
35+
</uses-permission>
36+
<uses-permission android:name="android.permission.INTERNET">
37+
</uses-permission>
38+
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS">
39+
</uses-permission>
40+
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED">
41+
</uses-permission>
42+
<uses-permission android:name="android.permission.RECORD_AUDIO">
43+
</uses-permission>
44+
<uses-permission android:name="android.permission.READ_CONTACTS">
45+
</uses-permission>
46+
<uses-permission android:name="android.permission.READ_SMS">
47+
</uses-permission>
48+
<uses-permission android:name="android.permission.VIBRATE">
49+
</uses-permission>
50+
<uses-permission android:name="android.permission.WAKE_LOCK">
51+
</uses-permission>
52+
<uses-permission android:name="android.permission.WRITE_CONTACTS">
53+
</uses-permission>
54+
<uses-permission android:name="android.permission.WRITE_SETTINGS">
55+
</uses-permission>
56+
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT">
57+
</uses-permission>
58+
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT">
59+
</uses-permission>
60+
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS">
61+
</uses-permission>
62+
<uses-permission android:name="com.tencent.mm.location.permission.SEND_VIEW">
63+
</uses-permission>
64+
<uses-permission android:name="android.permission.BLUETOOTH">
65+
</uses-permission>
66+
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN">
67+
</uses-permission>
68+
<uses-permission android:name="android.permission.BROADCAST_STICKY">
69+
</uses-permission>
70+
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW">
71+
</uses-permission>
72+
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE">
73+
</uses-permission>
74+
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE">
75+
</uses-permission>
76+
77+
78+
779
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
880
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
981

1082
<uses-sdk
11-
android:minSdkVersion="8"
83+
android:minSdkVersion="10"
1284
android:targetSdkVersion="21" />
1385

1486
<application
@@ -28,5 +100,32 @@
28100

29101
<activity android:name="androidx.pluginmgr.PluginActivity" />
30102
</application>
31-
103+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">
104+
</uses-permission>
105+
<uses-permission android:name="android.permission.READ_PHONE_STATE">
106+
</uses-permission>
107+
<uses-permission android:name="android.permission.GET_ACCOUNTS">
108+
</uses-permission>
109+
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS">
110+
</uses-permission>
111+
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS">
112+
</uses-permission>
113+
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS">
114+
</uses-permission>
115+
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS">
116+
</uses-permission>
117+
<uses-permission android:name="android.permission.READ_PROFILE">
118+
</uses-permission>
119+
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false">
120+
</uses-feature>
121+
<uses-permission android:name="com.tencent.mm.ext.permission.READ">
122+
</uses-permission>
123+
<uses-permission android:name="com.tencent.mm.ext.permission.WRITE">
124+
</uses-permission>
125+
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE">
126+
</uses-permission>
127+
<uses-permission android:name="com.tencent.mm.permission.C2D_MESSAGE">
128+
</uses-permission>
129+
<uses-permission android:name="com.android.vending.BILLING">
130+
</uses-permission>
32131
</manifest>
-54.4 KB
Binary file not shown.

PlugLoadDemo/libs/pluginmgr-0.0.4.jar

64.5 KB
Binary file not shown.

PlugLoadDemo/src/androidx/plmgrdemo/PlugListViewAdapter.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package androidx.plmgrdemo;
22

3-
import java.lang.ref.SoftReference;
43
import java.util.ArrayList;
54
import java.util.Collection;
6-
import java.util.HashMap;
75
import java.util.List;
8-
import java.util.Map;
96

107
import android.content.Context;
118
import android.graphics.drawable.Drawable;
@@ -22,8 +19,9 @@ class PlugListViewAdapter extends BaseAdapter {
2219

2320
private LayoutInflater inflater = null;
2421
private List<PlugInfo> datas;
25-
22+
private Context mContext;
2623
public PlugListViewAdapter(Context context, Collection<PlugInfo> datas) {
24+
mContext = context;
2725
inflater = LayoutInflater.from(context);
2826
this.datas = new ArrayList<PlugInfo>(datas);
2927
}
@@ -43,7 +41,6 @@ public long getItemId(int position) {
4341
return datas.get(position).getId().hashCode();
4442
}
4543

46-
private Map<String, SoftReference<Drawable>> imageCache = new HashMap<String, SoftReference<Drawable>>();
4744
@Override
4845
public View getView(int position, View convertView, ViewGroup parent) {
4946
ViewHolder mViewHolder = null;
@@ -65,17 +62,21 @@ public View getView(int position, View convertView, ViewGroup parent) {
6562
mViewHolder = (ViewHolder) convertView.getTag();
6663
}
6764
PlugInfo plug = datas.get(position);
68-
String title = plug.getResources().getString(plug.getPackageInfo().applicationInfo.labelRes);
69-
mViewHolder.title.setText(title);
70-
SoftReference<Drawable> imgref = imageCache.get(plug.getId());
71-
Drawable drawable;
72-
if (imgref != null) {
73-
drawable = imgref.get();
74-
} else {
75-
drawable = plug.getResources().getDrawable(
76-
plug.getPackageInfo().applicationInfo.icon);
77-
imageCache.put(plug.getId(), new SoftReference<Drawable>(drawable));
65+
{
66+
int labelRes =plug.getPackageInfo().applicationInfo.labelRes;
67+
if (labelRes != 0) {
68+
String label = plug.getResources().getString(labelRes);
69+
mViewHolder.title.setText(label);
70+
} else{
71+
CharSequence label = plug.getPackageInfo().applicationInfo
72+
.loadLabel(mContext.getPackageManager());
73+
if (label != null) {
74+
mViewHolder.title.setText(label);
75+
}
76+
}
7877
}
78+
Drawable drawable = plug.getResources().getDrawable(
79+
plug.getPackageInfo().applicationInfo.icon);
7980
mViewHolder.icon.setImageDrawable(drawable);
8081
String descText;
8182
int descId = plug.getPackageInfo().applicationInfo.descriptionRes;
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
eclipse.preferences.version=1
22
encoding//src/main/java=UTF-8
3-
encoding//src/test/java=UTF-8

android-pluginmgr/TODO

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
1 PackageManager , meta-data, provider
2+
2 inner & outer ClassLoader
3+
3 load class with extra parameter such as pluginId, think java.lang.String in android
4+
4 framework with android.support
5+
5 android ui thread init plug application
6+
6 service support

android-pluginmgr/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.android</groupId>
55
<artifactId>pluginmgr</artifactId>
6-
<version>0.0.1-SNAPSHOT</version>
6+
<version>0.0.4</version>
77
<name>androidx.pluginmgr</name>
88
<description>dynamic load uninstalled apk</description>
99
<dependencies>
@@ -17,6 +17,11 @@
1717
<artifactId>android</artifactId>
1818
<version>2.3.3</version>
1919
</dependency>
20+
<dependency>
21+
<groupId>junit</groupId>
22+
<artifactId>junit</artifactId>
23+
<version>4.11</version>
24+
</dependency>
2025

2126
</dependencies>
2227
<build>

0 commit comments

Comments
 (0)