Skip to content

Commit fbb2ef1

Browse files
committed
New Version of PluginMgr is arrival!
1 parent d7fe8e5 commit fbb2ef1

41 files changed

Lines changed: 2397 additions & 3778 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

PlugLoadDemo/AndroidManifest.xml

Lines changed: 85 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -2,80 +2,66 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
package="androidx.plmgrdemo"
44
android:versionCode="1"
5-
android:versionName="1.0" >
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-
5+
android:versionName="1.0">
6+
7+
<uses-feature
8+
android:name="android.hardware.camera"
9+
android:required="false" />
10+
<uses-feature
11+
android:name="android.hardware.camera.autofocus"
12+
android:required="false" />
13+
<uses-feature
14+
android:name="android.hardware.bluetooth"
15+
android:required="false" />
16+
<uses-feature
17+
android:name="android.hardware.location"
18+
android:required="false" />
19+
<uses-feature
20+
android:name="android.hardware.location.gps"
21+
android:required="false" />
22+
<uses-feature
23+
android:name="android.hardware.location.network"
24+
android:required="false" />
25+
<uses-feature
26+
android:name="android.hardware.microphone"
27+
android:required="false" />
28+
<uses-feature
29+
android:name="android.hardware.telephony"
30+
android:required="false" />
31+
<uses-feature
32+
android:name="android.hardware.touchscreen"
33+
android:required="false" />
34+
<uses-feature
35+
android:name="android.hardware.wifi"
36+
android:required="false" />
37+
38+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
39+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
40+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
41+
<uses-permission android:name="android.permission.CAMERA" />
42+
<uses-permission android:name="android.permission.GET_TASKS" />
43+
<uses-permission android:name="android.permission.INTERNET" />
44+
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
45+
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
46+
<uses-permission android:name="android.permission.RECORD_AUDIO" />
47+
<uses-permission android:name="android.permission.READ_CONTACTS" />
48+
<uses-permission android:name="android.permission.READ_SMS" />
49+
<uses-permission android:name="android.permission.VIBRATE" />
50+
<uses-permission android:name="android.permission.WAKE_LOCK" />
51+
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
52+
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
53+
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
54+
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
55+
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
56+
<uses-permission android:name="com.tencent.mm.location.permission.SEND_VIEW" />
57+
<uses-permission android:name="android.permission.BLUETOOTH" />
58+
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
59+
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
60+
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
61+
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
62+
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE" />
63+
64+
7965
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
8066
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
8167

@@ -84,49 +70,40 @@
8470
android:targetSdkVersion="21" />
8571

8672
<application
73+
android:name=".App"
8774
android:allowBackup="true"
8875
android:icon="@drawable/ic_launcher"
89-
android:label="@string/app_name"
90-
>
76+
android:label="@string/app_name">
9177
<activity
9278
android:name=".MainActivity"
93-
android:windowSoftInputMode="adjustUnspecified|stateHidden"
94-
android:label="@string/app_name" >
79+
android:label="@string/app_name"
80+
android:windowSoftInputMode="adjustUnspecified|stateHidden">
9581
<intent-filter>
9682
<action android:name="android.intent.action.MAIN" />
9783

9884
<category android:name="android.intent.category.LAUNCHER" />
9985
</intent-filter>
10086
</activity>
101-
102-
<activity android:name="androidx.pluginmgr.PluginActivity" />
87+
88+
<activity android:name="androidx.pluginmgr.DynamicActivity" />
10389
</application>
104-
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">
105-
</uses-permission>
106-
<uses-permission android:name="android.permission.READ_PHONE_STATE">
107-
</uses-permission>
108-
<uses-permission android:name="android.permission.GET_ACCOUNTS">
109-
</uses-permission>
110-
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS">
111-
</uses-permission>
112-
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS">
113-
</uses-permission>
114-
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS">
115-
</uses-permission>
116-
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS">
117-
</uses-permission>
118-
<uses-permission android:name="android.permission.READ_PROFILE">
119-
</uses-permission>
120-
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false">
121-
</uses-feature>
122-
<uses-permission android:name="com.tencent.mm.ext.permission.READ">
123-
</uses-permission>
124-
<uses-permission android:name="com.tencent.mm.ext.permission.WRITE">
125-
</uses-permission>
126-
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE">
127-
</uses-permission>
128-
<uses-permission android:name="com.tencent.mm.permission.C2D_MESSAGE">
129-
</uses-permission>
130-
<uses-permission android:name="com.android.vending.BILLING">
131-
</uses-permission>
90+
91+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
92+
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
93+
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
94+
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
95+
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
96+
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
97+
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
98+
<uses-permission android:name="android.permission.READ_PROFILE" />
99+
100+
<uses-feature
101+
android:name="android.hardware.bluetooth_le"
102+
android:required="false" />
103+
104+
<uses-permission android:name="com.tencent.mm.ext.permission.READ" />
105+
<uses-permission android:name="com.tencent.mm.ext.permission.WRITE" />
106+
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
107+
<uses-permission android:name="com.tencent.mm.permission.C2D_MESSAGE" />
108+
<uses-permission android:name="com.android.vending.BILLING" />
132109
</manifest>

PlugLoadDemo/PlugLoadDemo.iml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="android" name="Android">
5+
<configuration />
6+
</facet>
7+
</component>
8+
<component name="NewModuleRootManager" inherit-compiler-output="true">
9+
<exclude-output />
10+
<content url="file://$MODULE_DIR$">
11+
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
12+
<sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
13+
</content>
14+
<orderEntry type="jdk" jdkName="Android API 20 Platform" jdkType="Android SDK" />
15+
<orderEntry type="sourceFolder" forTests="false" />
16+
<orderEntry type="library" name="libs" level="project" />
17+
<orderEntry type="module" module-name="main" />
18+
</component>
19+
</module>

PlugLoadDemo/libs/dexmaker-1.1.jar

-659 KB
Binary file not shown.
-69.8 KB
Binary file not shown.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package androidx.plmgrdemo;
2+
3+
import android.app.Application;
4+
5+
import androidx.pluginmgr.PluginManager;
6+
7+
/**
8+
* @author Lody
9+
* @version 1.0
10+
*/
11+
public class App extends Application {
12+
13+
@Override
14+
public void onCreate() {
15+
super.onCreate();
16+
PluginManager.init(this);
17+
}
18+
}

PlugLoadDemo/src/androidx/plmgrdemo/MainActivity.java

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

3-
import java.io.File;
4-
import java.util.Collection;
5-
63
import android.app.Activity;
74
import android.app.ProgressDialog;
85
import android.content.Context;
@@ -17,13 +14,15 @@
1714
import android.widget.ListAdapter;
1815
import android.widget.ListView;
1916
import android.widget.Toast;
20-
import androidx.pluginmgr.PlugInfo;
17+
18+
import java.io.File;
19+
import java.util.Collection;
20+
2121
import androidx.pluginmgr.PluginManager;
22+
import androidx.pluginmgr.environment.PlugInfo;
2223

2324
public class MainActivity extends Activity {
24-
// private EditText pluginDirTxt;
25-
// private Button pluginLoader;
26-
private ListView pluglistView;
25+
private ListView plugListView;
2726
//
2827
private PluginManager plugMgr;
2928

@@ -37,17 +36,17 @@ protected void onCreate(Bundle savedInstanceState) {
3736

3837
final EditText pluginDirTxt = (EditText) findViewById(R.id.pluginDirTxt);
3938
Button pluginLoader = (Button) findViewById(R.id.pluginLoader);
40-
pluglistView = (ListView) findViewById(R.id.pluglist);
39+
plugListView = (ListView) findViewById(R.id.pluglist);
4140

42-
plugMgr = PluginManager.getInstance(this);
41+
plugMgr = PluginManager.getSingleton();
4342

44-
String pluginSrcDir = sdcard + "/Download";
43+
String pluginSrcDir = sdcard;
4544
pluginDirTxt.setText(pluginSrcDir);
4645

47-
pluglistView.setOnItemClickListener(new OnItemClickListener() {
46+
plugListView.setOnItemClickListener(new OnItemClickListener() {
4847
@Override
4948
public void onItemClick(AdapterView<?> parent, View view,
50-
int position, long id) {
49+
int position, long id) {
5150
plugItemClick(position);
5251
}
5352
});
@@ -94,8 +93,8 @@ public void run() {
9493
}
9594

9695
private void plugItemClick(int position) {
97-
PlugInfo plug = (PlugInfo) pluglistView.getItemAtPosition(position);
98-
plugMgr.startMainActivity(this, plug.getPackageName());
96+
PlugInfo plug = (PlugInfo) plugListView.getItemAtPosition(position);
97+
plugMgr.startMainActivity(this, plug);
9998
}
10099

101100
private void setPlugins(final Collection<PlugInfo> plugs) {
@@ -105,7 +104,7 @@ private void setPlugins(final Collection<PlugInfo> plugs) {
105104
final ListAdapter adapter = new PlugListViewAdapter(this, plugs);
106105
runOnUiThread(new Runnable() {
107106
public void run() {
108-
pluglistView.setAdapter(adapter);
107+
plugListView.setAdapter(adapter);
109108
}
110109
});
111110
}

PlugLoadDemo/src/androidx/plmgrdemo/PlugListViewAdapter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
import android.widget.BaseAdapter;
1414
import android.widget.ImageView;
1515
import android.widget.TextView;
16-
import androidx.pluginmgr.PlugInfo;
16+
17+
import androidx.pluginmgr.environment.PlugInfo;
1718

1819
class PlugListViewAdapter extends BaseAdapter {
1920

README.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
PluginManager is used to manage android applications like [eclipse](http://eclipse.org/) plugins.
55
you can start an activity from an uninstalled apk placed in sdcard,just like it has installed or registed in the application's `AndroidManifest.xml`.
66
### Version
7-
[ ![Download](https://img.shields.io/badge/PluginManager-0.1.4-brightgreen.svg?style=plastic) ](https://github.com/houkx/android-pluginmgr/archive/master.zip)
7+
[ ![Download](https://img.shields.io/badge/PluginManager-0.2.0-brightgreen.svg?style=plastic) ](https://github.com/houkx/android-pluginmgr/archive/master.zip)
88
[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Android%20PluginManager-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/1457)
99
### Support Features
1010
- a **normal** apk is regard as **plug-in**
@@ -26,17 +26,27 @@ you can start an activity from an uninstalled apk placed in sdcard,just like it
2626

2727
- regist an activity
2828

29-
`<activity android:name="androidx.pluginmgr.PluginActivity" />`
29+
`<activity android:name="androidx.pluginmgr.DynamicActivity" />`
30+
31+
- init PluginMgr in your application
32+
```java
33+
@Override
34+
public void onCreate(){
35+
PluginManager.init(this);
36+
//...
37+
}
38+
```
39+
3040

3141
- load plugin from plug apk:
3242
```java
33-
PluginManager pluginMgr = PluginManager.getInstance(MyActivity);
43+
PluginManager pluginMgr = PluginManager.getSingleton();
3444
File myPlug = new File("/mnt/sdcard/Download/myplug.apk");
3545
PlugInfo plug = pluginMgr.loadPlugin(myPlug).iterator().next();
3646
```
3747
- start activity:
3848
`
39-
pluginMgr.startMainActivity(context, plug.getPackageName());
49+
pluginMgr.startMainActivity(context, plug);
4050
`
4151

4252
## License
@@ -59,6 +69,6 @@ you can start an activity from an uninstalled apk placed in sdcard,just like it
5969
```
6070
## About
6171
[author's blog](http://blog.csdn.net/hkxxx/article/details/42194387)
62-
72+
### QQGroup:334394768
6373
author's email:[address1](mailto:1084940623@qq.com)
6474
[address2](mailto:hkx.aidream@gmail.com)

0 commit comments

Comments
 (0)