huangbo 9 ans auparavant
Parent
commit
b4d7ef9122

+ 2 - 4
multiple-client/assets/mobile-action.xml

@ -1,6 +1,8 @@
1 1
<?xml version="1.0" encoding="UTF-8"?>
2 2
<actions>
3 3
    <action name="openIpuApp" class="com.ai.mobile.multiple.func.AppManagePlugin" method="openIpuApp"/>
4
    <action name="openNativeApp" class="com.ai.mobile.multiple.func.AppManagePlugin" method="openNativeApp"></action>
5
	<action name="initAppConfig" class="com.ai.mobile.multiple.func.AppManagePlugin" method="initAppConfig"></action>
4 6
    
5 7
    <!-- MobileBasic -->
6 8
	<action name="call" class="com.wade.mobile.func.MobileBasic" method="call"/>
@ -98,8 +100,4 @@
98 100
	<action name="unregisterForPush" class="com.ai.mobile.im.func.MobilePush" method="unregisterForPush"></action>
99 101
	<action name="sendText" class="com.ai.mobile.im.func.MobilePush" method="sendText"></action>
100 102
	<action name="setCallbackForPush" class="com.ai.mobile.im.func.MobilePush" method="setCallbackForPush"></action>
101
	
102
	<action name="openNativeApp" class="com.ai.mobile.multiple.func.AppManagePlugin" method="openNativeApp"></action>
103
	<action name="initAppConfig" class="com.ai.mobile.multiple.func.AppManagePlugin" method="initAppConfig"></action>
104
	
105 103
</actions>

+ 96 - 41
multiple-client/src/com/ai/mobile/multiple/func/AppManagePlugin.java

@ -1,22 +1,27 @@
1 1
package com.ai.mobile.multiple.func;
2 2

3
import java.util.HashMap;
4
import java.util.Map;
5

3 6
import org.json.JSONArray;
4
import org.json.JSONObject;
5 7

6 8
import android.content.ComponentName;
7 9
import android.content.Intent;
8 10

9 11
import com.ai.mobile.multiple.SubAppActivity;
10 12
import com.ailk.common.data.IData;
13
import com.ailk.common.data.IDataset;
11 14
import com.ailk.common.data.impl.DataMap;
15
import com.ailk.common.data.impl.DatasetList;
16
import com.wade.mobile.app.MobileUtil;
17
import com.wade.mobile.app.SimpleUpdate;
12 18
import com.wade.mobile.frame.IWadeMobile;
13 19
import com.wade.mobile.frame.multiple.MultipleAppConfig;
14 20
import com.wade.mobile.frame.multiple.MultipleManager;
15 21
import com.wade.mobile.frame.plugin.Plugin;
16
import com.wade.mobile.func.MobileNetWork;
17
import com.wade.mobile.func.MobileStorage;
18 22

19 23
public class AppManagePlugin extends Plugin {
24
	private Map<String, NativeAppConfig> nativeAppConfigs = new HashMap<String, NativeAppConfig>();
20 25
	private int OPEN_IPU_APP = 1;
21 26

22 27
	public AppManagePlugin(IWadeMobile wademobile) {
@ -25,53 +30,61 @@ public class AppManagePlugin extends Plugin {
25 30

26 31
	public void openNativeApp(JSONArray params) throws Exception {
27 32
		String appId = params.getString(0);
28
		MobileStorage storage = wademobile.getPluginManager().getPlugin(MobileStorage.class);
29
		Object tmp  = storage.getMemoryCache(appId, null);
30
		IData appInfo = tmp == null ? null : new DataMap(tmp.toString());
33
		NativeAppConfig appConfig = nativeAppConfigs.get(appId);
34
		String packageName = appConfig.getPackageName();
35
		String className = appConfig.getClassName();
31 36
		
32
		String packageName = params.getString(0);
33
		String className = params.getString(1);
34

35
		ComponentName cn = new ComponentName(packageName, className);
36
		Intent intent = new Intent();
37
		/*
38
		 * 传递公共参数,如:tokenId
39
		 */
40
		intent.setComponent(cn);
41
		startActivityForResult(intent, 2);
42
		try {
43

44
		} catch (Exception e) {
45
			/* 如果应用不存在则需要下载,配置需要提供下载的url */
37
		if(MobileUtil.checkActivity(context, packageName, className)){//应用的Activity是否存在
38
			String ipuParam = params.getString(1);
39
			if(isNull(ipuParam)){
40
				error("打开第三方应用参数异常");
41
			}
42
			IData ipuData = new DataMap(ipuParam);
43
			
44
			ComponentName cn = new ComponentName(packageName, className);
45
			Intent intent = new Intent();
46
			intent.putExtra("STAFF_ID", ipuData.getString("STAFF_ID"));//IPU的sessionId
47
			intent.putExtra("ACCOUNT", ipuData.getString("ACCOUNT"));//IPU的登陆账号
48
			intent.setComponent(cn);
49
			startActivityForResult(intent, 2);
50
		}else{
51
			String downloadUrl = appConfig.getDownloadUrl();
52
			/* 如果应用不存在则需要下载,配置需要下载应用 */
53
			SimpleUpdate simpleUpdate = new SimpleUpdate(context, downloadUrl);
54
			simpleUpdate.update();
46 55
		}
47 56
	}
48 57

49
	public void initAppConfig(JSONArray param) throws Exception {
50
		MobileNetWork mobileNetWork = wademobile.getPluginManager()
51
				.getPlugin(MobileNetWork.class);
52
		String appConfig = mobileNetWork.dataRequest(
53
				"LoginBean.initAppConfig", null);
54
		JSONObject appConfigJson = new JSONObject(appConfig);
55
		JSONArray apps = appConfigJson.getJSONArray("APPS");
56

57
		MultipleAppConfig multipleAppConfig = null;
58
		for (int i = 0; i < apps.length(); i++) {
59
			JSONObject o = (JSONObject) apps.get(i);
60

61
			multipleAppConfig = new MultipleAppConfig(
62
					o.getString("requestHost"), o.getString("requestPath"),
63
					o.getString("requestServlet"), o.getString("appPath"));
64
			MultipleManager.putAppConfig(o.getString("appId"),
65
					multipleAppConfig);
58
	public void initAppConfig(JSONArray params) throws Exception {
59
		String apps = params.getString(0);
60
		if(isNull(apps)){
61
			error("App配置信息初始化异常!");
62
			return;
63
		}
64
		IDataset appDatas = new DatasetList(apps);
65
		IData appData;
66
		for(Object app : appDatas){
67
			appData = (IData)app;
68
			if("I".equals(appData.getString("appType"))){
69
				MultipleManager.putAppConfig(appData.getString("appId"),
70
						new MultipleAppConfig(appData.getString("requestHost"),
71
								appData.getString("requestPath"), 
72
								appData.getString("requestServlet"), 
73
								appData.getString("appPath")));
74
			}else if("N".equals(appData.getString("appType"))){
75
				nativeAppConfigs.put(appData.getString("appId"), 
76
						new NativeAppConfig(appData.getString("packageName"), 
77
						appData.getString("className"), 
78
						appData.getString("downloadUrl")));
79
			}
66 80
		}
67 81
	}
68 82

69
	public void openIpuApp(JSONArray param) throws Exception {
70
		String appId = param.getString(0);
83
	public void openIpuApp(JSONArray params) throws Exception {
84
		String appId = params.getString(0);
71 85
		MultipleManager.setCurrAppName(appId);
72 86
		MultipleManager.setMultiple(true);
73
		Intent intent = new Intent(wademobile.getActivity(),
74
				SubAppActivity.class);
87
		Intent intent = new Intent(wademobile.getActivity(), SubAppActivity.class);
75 88
		startActivityForResult(intent, OPEN_IPU_APP);
76 89
	}
77 90

@ -82,4 +95,46 @@ public class AppManagePlugin extends Plugin {
82 95
			MultipleManager.setMultiple(false);
83 96
		}
84 97
	}
98
	
99
	
100
	/**
101
	 * @author huangbo
102
	 * 平台级应用中原生应用的配置对象
103
	 */
104
	static class NativeAppConfig {
105
		private String packageName;
106
		private String className;
107
		private String downloadUrl;
108
		
109
		public NativeAppConfig(String packageName, String className, String downloadUrl){
110
			this.packageName = packageName;
111
			this.className = className;
112
			this.downloadUrl = downloadUrl;
113
		}
114

115
		public String getPackageName() {
116
			return packageName;
117
		}
118

119
		public void setPackageName(String packageName) {
120
			this.packageName = packageName;
121
		}
122

123
		public String getClassName() {
124
			return className;
125
		}
126

127
		public void setClassName(String className) {
128
			this.className = className;
129
		}
130

131
		public String getDownloadUrl() {
132
			return downloadUrl;
133
		}
134

135
		public void setDownloadUrl(String downloadUrl) {
136
			this.downloadUrl = downloadUrl;
137
		}
138
	}
139

85 140
}