Commit ebb7dca2 authored by silver47gin's avatar silver47gin
Browse files

增加Taro-RN代码

parent fc039aac
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tarodemo">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="${appIcon}"
android:roundIcon="${appRoundIcon}"
android:allowBackup="false"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="${usesCleartextTraffic}"
android:requestLegacyExternalStorage="true">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
\ No newline at end of file
package com.calendar;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import java.util.Map;
import java.util.HashMap;
import android.util.Log;
import com.facebook.react.bridge.Promise;
public class CalendarModule extends ReactContextBaseJavaModule {
CalendarModule(ReactApplicationContext context) {
super(context);
}
@Override
public String getName() {
return "CalendarModule";
}
@ReactMethod
public void createCalendarEvent(String calendarName, Promise promise) {
String result = "This is CalendarModule" + calendarName + "createCalendarEvent";
Log.d("CalendarModule",result);
promise.resolve(result);
}
}
\ No newline at end of file
package com.calendar;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CalendarPackage implements ReactPackage {
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new CalendarModule(reactContext));
return modules;
}
}
\ No newline at end of file
package com.tarodemo;
import com.facebook.react.ReactActivity;
public class MainActivity extends ReactActivity {
/**
* Returns the name of the main component registered from JavaScript. This is used to schedule
* rendering of the component.
*/
@Override
protected String getMainComponentName() {
return "HelloWorld";
}
}
package com.tarodemo;
import com.tarodemo.generated.BasePackageList;
import android.app.Application;
import android.content.Context;
import com.facebook.react.PackageList;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.soloader.SoLoader;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.List;
import com.calendar.CalendarPackage;
import com.tencent.wework.WWPackage;
import org.unimodules.adapters.react.ModuleRegistryAdapter;
import org.unimodules.adapters.react.ReactModuleRegistryProvider;
import com.microsoft.codepush.react.CodePush;
public class MainApplication extends Application implements ReactApplication {
private final ReactModuleRegistryProvider mModuleRegistryProvider = new ReactModuleRegistryProvider(
new BasePackageList().getPackageList(), null);
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
packages.add(new CalendarPackage());
packages.add(new WWPackage());
List<ReactPackage> unimodules = Arrays.<ReactPackage>asList(new ModuleRegistryAdapter(mModuleRegistryProvider));
packages.addAll(unimodules);
return packages;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
@Override
protected String getJSBundleFile() {
return CodePush.getJSBundleFile();
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
// initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
}
/**
* Loads Flipper in React Native templates. Call this in the onCreate method
* with something like initializeFlipper(this,
* getReactNativeHost().getReactInstanceManager());
*
* @param context
* @param reactInstanceManager
*/
private static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
if (BuildConfig.DEBUG) {
try {
/*
* We use reflection here to pick up the class that initializes Flipper, since
* Flipper library is not available in release mode
*/
Class<?> aClass = Class.forName("com.tarodemo.ReactNativeFlipper");
aClass.getMethod("initializeFlipper", Context.class, ReactInstanceManager.class).invoke(null, context,
reactInstanceManager);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
}
package com.tencent.wework;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import java.util.Map;
import java.util.Arrays;
import java.util.HashMap;
import android.util.Log;
import com.facebook.react.bridge.Promise;
import com.tencent.wework.api.*;
import com.tencent.wework.api.model.*;
public class WWNativeModule extends ReactContextBaseJavaModule {
public IWWAPI iwwapi;
WWNativeModule(ReactApplicationContext context) {
super(context);
}
@Override
public String getName() {
return "WWNativeModule";
}
@ReactMethod
public void init(String schema) {
this.iwwapi = WWAPIFactory.createWWAPI(this.getReactApplicationContext().getBaseContext());
this.iwwapi.registerApp(schema);
}
@ReactMethod
public void login(String appId, String agentId, String schema, Promise promise) {
WWAuthMessage.Req req = new WWAuthMessage.Req();
req.sch = schema;
req.appId = appId;
req.agentId = agentId;
req.state = "dd";
this.iwwapi.sendMessage(req, new IWWAPIEventHandler() {
@Override
public void handleResp(BaseMessage resp) {
if (resp instanceof WWAuthMessage.Resp) {
WWAuthMessage.Resp rsp = (WWAuthMessage.Resp) resp;
if (Arrays.<Integer>asList(WWAuthMessage.ERR_CANCEL, WWAuthMessage.ERR_FAIL).contains(rsp.errCode)) {
promise.reject("调用失败", new Error(String.valueOf(rsp.errCode)));
return;
}
if (rsp.errCode == WWAuthMessage.ERR_OK) {
promise.resolve(rsp.code);
return;
}
}
}
});
}
@Override
public Map<String, Object> getConstants() {
final Map<String, Object> constants = new HashMap<>();
constants.put("ERR_CANCEL", WWAuthMessage.ERR_CANCEL);
constants.put("ERR_FAIL", WWAuthMessage.ERR_FAIL);
constants.put("ERR_OK", WWAuthMessage.ERR_OK);
return constants;
}
}
\ No newline at end of file
package com.tencent.wework;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class WWPackage implements ReactPackage {
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new WWNativeModule(reactContext));
return modules;
}
}
\ No newline at end of file
package com.tencent.wework.api;
import android.content.Intent;
import com.tencent.wework.api.model.BaseMessage;
public interface IWWAPI {
/**
*
* @param schema
* @return
*/
boolean registerApp(String schema);
void unregisterApp();
boolean handleIntent(Intent var1, IWWAPIEventHandler var2);
/**
*
* @return 是否安装了企业微信
*/
boolean isWWAppInstalled();
/**
*
* @return 是否支持api
*/
boolean isWWAppSupportAPI();
/**
*
* @return 安装的企业微信版本
*/
int getWWAppSupportAPI();
/**
* 打开企业微信
* @return
*/
boolean openWWApp();
/**
*
* @param 发送的消息
* @return 消息是否合法
*/
boolean sendMessage(BaseMessage var1);
/**
*
* @param var1 发送的包
* @param callback 回包
* @return 消息是否合法
*/
boolean sendMessage(BaseMessage var1, IWWAPIEventHandler callback);
void detach();
}
package com.tencent.wework.api;
import com.tencent.wework.api.model.BaseMessage;
/**
* Created by hu on 16/5/30.
*/
public interface IWWAPIEventHandler {
void handleResp(BaseMessage resp);
}
package com.tencent.wework.api;
import android.content.Context;
/**
* Created by hu on 16/5/30.
*/
public class WWAPIFactory {
private static final String TAG = "WWAPI.WWAPIFactory";
public static IWWAPI createWWAPI(Context context) {
return new WWAPIImpl(context);
}
private WWAPIFactory() {
throw new RuntimeException(this.getClass().getSimpleName() + " should not be instantiated");
}
}
package com.tencent.wework.api;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import com.tencent.wework.api.model.BaseMessage;
import com.tencent.wework.api.model.WWBaseMessage;
import com.tencent.wework.api.model.WWBaseRespMessage;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
/**
* Created by hu on 16/5/30.
*/
final public class WWAPIImpl implements IWWAPI {
private Context context;
private String schema;
private Map<String, IWWAPIEventHandler> callbacks = new HashMap<String, IWWAPIEventHandler>();
private BroadcastReceiver mReciver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try {
if(!schema.equals(intent.getScheme())){
return;
}
final BaseMessage msg = BaseMessage.parseUri(intent.getData());
if (msg instanceof WWBaseRespMessage) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
try {
callbacks.get(((WWBaseRespMessage) msg).transaction).handleResp(msg);
callbacks.remove(((WWBaseRespMessage) msg).transaction);
} catch (Throwable e) {
}
}
});
}
} catch (Throwable e) {
}
}
};
public WWAPIImpl(Context var0) {
context = var0;
}
@Override
public boolean registerApp(String var1) {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addDataScheme(var1);
intentFilter.addAction(var1);
context.registerReceiver(mReciver, intentFilter);
schema = var1;
return true;
}
@Override
public void unregisterApp() {
}
@Override
public boolean handleIntent(Intent intent, IWWAPIEventHandler handler) {
return false;
}
@Override
public boolean isWWAppInstalled() {
return isWW("com.tencent.wework");
}
@Override
public boolean isWWAppSupportAPI() {
return getWWAppSupportAPI() >= 100;
}
@Override
public int getWWAppSupportAPI() {
try {
PackageInfo var1;
var1 = context.getPackageManager().getPackageInfo("com.tencent.wework", PackageManager.GET_META_DATA);
return var1 == null ? 0 : var1.versionCode;
} catch (Throwable var2) {
return 0;
}
}
@Override
public boolean openWWApp() {
try {
context.startActivity(context.getPackageManager().getLaunchIntentForPackage("com.tencent.wework"));
return true;
} catch (Throwable var2) {
return false;
}
}
@Override
public boolean sendMessage(BaseMessage var1) {
Intent i = new Intent("com.tencent.wework.apihost");
i.setClassName("com.tencent.wework", "com.tencent.wework.apihost.WWAPIActivity");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
try {
var1.setContext(context);
Bundle b = BaseMessage.pack(var1);
i.putExtras(b);
i.putExtra("PendingIntent", PendingIntent.getBroadcast(context, 0, new Intent(context, mReciver.getClass()), PendingIntent.FLAG_UPDATE_CURRENT));
context.startActivity(i);
return true;
} catch (Throwable var2) {
return false;
}
}
@Override
public boolean sendMessage(BaseMessage var1, IWWAPIEventHandler callback) {
if (sendMessage(var1)) {
if (var1 instanceof WWBaseMessage) {
callbacks.put(((WWBaseMessage) var1).transaction, callback);
}
return true;
}
return false;
}
@Override
public void detach() {
context.unregisterReceiver(mReciver);
}
private String getSignature(String pkg) {
try {
PackageInfo var1;
var1 = context.getPackageManager().getPackageInfo(pkg, PackageManager.GET_SIGNATURES);
return MD5Encode(var1.signatures[0].toByteArray());
} catch (Throwable var2) {
}
return "";
}
private static String MD5Encode(byte[] toencode) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.reset();
md5.update(toencode);
return HexEncode(md5.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
private static String HexEncode(byte[] toencode) {
StringBuilder sb = new StringBuilder(toencode.length * 2);
for (byte b : toencode) {
sb.append(Integer.toHexString((b & 0xf0) >>> 4));
sb.append(Integer.toHexString(b & 0x0f));
}
return sb.toString().toUpperCase();
}
private boolean isWW(String pkg) {
try {
return pkg.equals("com.tencent.wework") && getSignature(pkg).equals("011A40266C8C75D181DDD8E4DDC50075");
} catch (Throwable var2) {
return false;
}
}
}
package com.tencent.wework.api.model;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import com.tencent.wework.api.util.ReflecterHelper;
/**
* Created by hu on 16/5/30.
*/
public abstract class BaseMessage {
protected static final int SDK_VER = 2;
protected Context mContext = null;
public BaseMessage() {
}
public void setContext(Context context){
mContext = context;
}
public abstract int getType();
public abstract void toBundle(Bundle var1);
public abstract void fromBundle(Bundle var1);
public abstract Uri toUri();
public abstract void fromUri(Uri var1);
public static BaseMessage parse(Bundle var1) {
try {
String className = var1.getString("_wwobject_identifier_");
if (!TextUtils.isEmpty(className)) {
BaseMessage ret = (BaseMessage) ReflecterHelper.newInstance(className);
ret.fromBundle(var1);
return ret;
}
} catch (Throwable e) {
e.printStackTrace();
}
return null;
}
public static Bundle pack(BaseMessage bm) {
if (bm == null) {
return null;
}
Bundle bundle = new Bundle();
bm.toBundle(bundle);
bundle.putString("_wwobject_identifier_", bm.getClass().getName());
return bundle;
}
public static BaseMessage parseUri(Uri var1) {
try {
String className = var1.getQueryParameter("wwoid");
if (!TextUtils.isEmpty(className)) {
BaseMessage ret = (BaseMessage) ReflecterHelper.newInstance(className);
ret.fromUri(var1);
return ret;
}
} catch (Throwable e) {
e.printStackTrace();
}
return null;
}
public static Uri packUri(BaseMessage bm) {
if (bm == null) {
return null;
}
Uri uri = bm.toUri();
if(uri == null){
return null;
}
return uri.buildUpon().appendQueryParameter("wwoid", bm.getClass().getName()).build();
}
public abstract boolean checkArgs();
public static final int TYPE_SHARE_MESSAGE = 0;
}
package com.tencent.wework.api.model;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
/**
* Created by hu on 16/5/30.
* ½
*/
public class WWAuthMessage {
public static final int ERR_CANCEL = -1;
public static final int ERR_OK = 0;
public static final int ERR_FAIL = 1;
public static class Req extends WWBaseMessage {
public String state;
public String sch;
public Req() {
}
/**
*
*
* @param stat state
* @param schema callback schema
*/
public Req(String stat, String schema) {
state = stat;
sch = schema;
}
@Override
public int getType() {
return TYPE_AUTH;
}
@Override
public boolean checkArgs() {
return !TextUtils.isEmpty(appId) && !TextUtils.isEmpty(agentId) && !TextUtils.isEmpty(sch);
}
public void toBundle(Bundle var1) {
var1.putString("_wwauthmsg_state", state);
var1.putString("_wwauthmsg_schema", sch);
super.toBundle(var1);
}
public void fromBundle(Bundle var1) {
state = var1.getString("_wwauthmsg_state");
sch = var1.getString("_wwauthmsg_schema");
super.fromBundle(var1);
}
}
public static class Resp extends WWBaseRespMessage {
public String code;
public String state;
public int errCode = ERR_CANCEL;
public String schema;
@Override
public int getType() {
return TYPE_AUTH;
}
public void toBundle(Bundle var1) {
var1.putString("_wwauthrsp_code", code);
var1.putString("_wwauthrsp_state", state);
var1.putInt("_wwauthrsp_err", errCode);
super.toBundle(var1);
}
public void fromBundle(Bundle var1) {
code = var1.getString("_wwauthrsp_code");
state = var1.getString("_wwauthrsp_state");
errCode = var1.getInt("_wwauthrsp_err", ERR_CANCEL);
super.fromBundle(var1);
}
@Override
public Intent toIntent() {
Intent intent = new Intent(schema, packUri(this));
intent.setPackage(descPkg);
Bundle b = new Bundle();
toBundle(b);
intent.putExtras(b);
return intent;
}
public Uri toUri() {
Uri uri = super.toUri();
uri = uri.buildUpon().scheme(schema).authority("sso").
appendQueryParameter("code", code == null ? "" : code).
appendQueryParameter("state", state == null ? "" : state).
appendQueryParameter("errcode", String.valueOf(errCode)).
build();
return uri;
}
public void fromUri(Uri uri) {
super.fromUri(uri);
if (uri == null) {
return;
}
errCode = -100;
try {
errCode = Integer.parseInt(uri.getQueryParameter("errcode"));
} catch (Throwable e) {
}
code = uri.getQueryParameter("code");
state = uri.getQueryParameter("state");
if (errCode == ERR_CANCEL) {
return;
}
if (TextUtils.isEmpty(code)) {
errCode = ERR_FAIL;
} else {
errCode = ERR_OK;
}
}
}
}
package com.tencent.wework.api.model;
import android.net.Uri;
import android.os.Bundle;
import android.os.SystemClock;
/**
* Created by hu on 16/5/30.
*/
public abstract class WWBaseMessage extends BaseMessage {
public String transaction;
public String appId;
public String agentId;
public String appName;
public String appPkg;
public int sdkVer;
public void toBundle(Bundle var1) {
var1.putString("_wwapi_basereq_transaction", transaction = String.valueOf(SystemClock.uptimeMillis()));
var1.putString("_wwapi_basereq_openid", this.appId);
var1.putString("_wwapi_basereq_agentid", this.agentId);
try {
var1.putString("_wwapi_basereq_appbundle", mContext.getPackageName());
var1.putString("_wwapi_basereq_appname", mContext.getString(mContext.getApplicationInfo().labelRes));
}catch (Throwable e){
}
var1.putInt("_wwobject_sdkVer", SDK_VER);
}
@Override
public boolean checkArgs() {
return true;
}
public void fromBundle(Bundle var1) {
this.transaction = var1.getString("_wwapi_basereq_transaction");
this.appId = var1.getString("_wwapi_basereq_openid");
this.agentId = var1.getString("_wwapi_basereq_agentid");
this.appName = var1.getString("_wwapi_basereq_appname");
this.appPkg = var1.getString("_wwapi_basereq_appbundle");
sdkVer = var1.getInt("_wwobject_sdkVer", 0);
}
public Uri toUri() {
return null;
}
public void fromUri(Uri var1) {
}
public static final int TYPE_UNKNOWN = 0;
public static final int TYPE_MEDIA = 1000;
public static final int TYPE_AUTH = 1001;
}
package com.tencent.wework.api.model;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.SystemClock;
import android.text.TextUtils;
/**
* Created by hu on 16/5/30.
*/
public abstract class WWBaseRespMessage extends BaseMessage {
public String transaction;
public String appName;
public String appPkg;
public int sdkVer;
public String descPkg;
public void toBundle(Bundle var1) {
var1.putString("_wwapi_basersp_transaction", transaction);
try {
var1.putString("_wwapi_basersp_appbundle", mContext.getPackageName());
var1.putString("_wwapi_basersp_appname", mContext.getString(mContext.getApplicationInfo().labelRes));
} catch (Throwable e) {
}
var1.putInt("_wwobject_sdkVer", SDK_VER);
}
@Override
public boolean checkArgs() {
return !TextUtils.isEmpty(descPkg);
}
public void fromBundle(Bundle var1) {
this.transaction = var1.getString("_wwapi_basersp_transaction");
this.appName = var1.getString("_wwapi_basersp_appname");
this.appPkg = var1.getString("_wwapi_basersp_appbundle");
sdkVer = var1.getInt("_wwobject_sdkVer", 0);
}
public Uri toUri() {
Uri uri = new Uri.Builder().appendQueryParameter("wwtr", transaction == null ? "" : transaction).
appendQueryParameter("wwver", String.valueOf(sdkVer)).build();
return uri;
}
public void fromUri(Uri var1) {
if (var1 == null) {
return;
}
try {
transaction = var1.getQueryParameter("wwtr");
sdkVer = Integer.parseInt(var1.getQueryParameter("wwver"));
} catch (Throwable e) {
}
}
public abstract Intent toIntent();
public static final int TYPE_UNKNOWN = 0;
public static final int TYPE_MEDIA = 2000;
public static final int TYPE_AUTH = 2001;
}
package com.tencent.wework.api.model;
import java.io.ByteArrayOutputStream;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
/**
* Created by hu on 16/8/1.
* 单条聊天记录信息
*/
public class WWMediaConversation extends WWMediaMessage.WWMediaObject {
private static final String TAG = "WWAPI.WWMediaConv";
private static final int CONTENT_LENGTH_LIMIT = 10485760;
private static final int PATH_LENGTH_LIMIT = 10240;
/**
* 这条消息的发信人昵称
*/
public String name;
/**
* 消息时间
*/
public long date;//ms
/**
* 发信人头像
*/
public byte[] avatarData;
/**
* 发信人头像url
*/
public String avatarPath;
public WWMediaMessage.WWMediaObject message;
public WWMediaConversation() {
}
public WWMediaConversation(byte[] avatarData) {
avatarData = avatarData;
}
public WWMediaConversation(Bitmap avatar) {
try {
ByteArrayOutputStream var2 = new ByteArrayOutputStream();
avatar.compress(Bitmap.CompressFormat.JPEG, 85, var2);
avatarData = var2.toByteArray();
var2.close();
} catch (Exception var3) {
var3.printStackTrace();
}
}
@Override
public int getType() {
return WWMediaMessage.WWMediaObject.TYPE_CONVERSATION;
}
@Override
public boolean checkArgs() {
if(!super.checkArgs()){
return false;
}
if (this.avatarData != null && this.avatarData.length > CONTENT_LENGTH_LIMIT) {
Log.d(TAG, "checkArgs fail, content is too large");
return false;
} else if (this.avatarPath != null && this.avatarPath.length() > PATH_LENGTH_LIMIT) {
Log.d(TAG, "checkArgs fail, path is invalid");
return false;
} else if (this.avatarPath != null && this.getFileSize(this.avatarPath) > CONTENT_LENGTH_LIMIT) {
Log.d(TAG, "checkArgs fail, image content is too large");
return false;
} else {
return message != null && message.checkArgs();
}
}
public void toBundle(Bundle var1) {
super.toBundle(var1);
var1.putString("_wwconvobject_name", name);
var1.putLong("_wwconvobject_date", date);
var1.putByteArray("_wwconvobject_avatarData", avatarData);
var1.putString("_wwconvobject_avatarPath", avatarPath);
var1.putBundle("_wwconvobject_message", BaseMessage.pack(message));
}
public void fromBundle(Bundle var1) {
super.fromBundle(var1);
name = var1.getString("_wwconvobject_name");
date = var1.getLong("_wwconvobject_date");
avatarData = var1.getByteArray("_wwconvobject_avatarData");
avatarPath = var1.getString("_wwconvobject_avatarPath");
try {
message = (WWMediaObject) BaseMessage.parse(var1.getBundle("_wwconvobject_message"));
}catch (Throwable e){
Log.d(TAG, "fromBundle", e);
}
}
}
package com.tencent.wework.api.model;
import android.os.Bundle;
import android.util.Log;
import com.tencent.wework.api.model.WWMediaMessage.WWMediaObject;
/**
* Created by hu on 16/5/30.
* 文件
*/
public class WWMediaFile extends WWMediaObject {
private static final String TAG = "WWAPI.WWMediaFile";
private int contentLengthLimit = 10485760;
/**
* 文件二进制数据
*/
public byte[] fileData;
/**
* 文件路径
*/
public String filePath;
/**
* 文件名称
*/
public String fileName;
@Override
public int getType() {
return WWMediaObject.TYPE_FILE;
}
public boolean checkArgs() {
if(!super.checkArgs()){
return false;
}
if (this.fileData != null && this.fileData.length != 0 || this.filePath != null && this.filePath.length() != 0) {
if (this.fileData != null && this.fileData.length > this.contentLengthLimit) {
Log.d(TAG, "checkArgs fail, fileData is too large");
return false;
} else if (this.filePath != null && this.getFileSize(this.filePath) > this.contentLengthLimit) {
Log.d(TAG, "checkArgs fail, fileSize is too large");
return false;
} else {
return true;
}
} else {
Log.d(TAG, "checkArgs fail, both arguments is null");
return false;
}
}
public void toBundle(Bundle var1) {
var1.putByteArray("_wwfileobject_fileData", fileData);
var1.putString("_wwfileobject_filePath", filePath);
var1.putString("_wwfileobject_fileName", fileName);
super.toBundle(var1);
}
public void fromBundle(Bundle var1) {
fileData = var1.getByteArray("_wwfileobject_fileData");
filePath = var1.getString("_wwfileobject_filePath");
fileName = var1.getString("_wwfileobject_fileName");
super.fromBundle(var1);
}
public void setContentLengthLimit(int var1) {
this.contentLengthLimit = var1;
}
}
package com.tencent.wework.api.model;
import java.io.ByteArrayOutputStream;
import android.graphics.Bitmap;
/**
* Created by hu on 16/5/30.
* ͼƬ
*/
public class WWMediaImage extends WWMediaFile {
private static final String TAG = "WWAPI.WWMediaImage";
public WWMediaImage() {
}
public WWMediaImage(byte[] var1) {
fileData = var1;
}
public WWMediaImage(Bitmap var1) {
try {
ByteArrayOutputStream var2 = new ByteArrayOutputStream();
var1.compress(Bitmap.CompressFormat.JPEG, 85, var2);
fileData = var2.toByteArray();
var2.close();
} catch (Exception var3) {
var3.printStackTrace();
}
}
@Override
public int getType() {
return WWMediaMessage.WWMediaObject.TYPE_IMAGE;
}
}
package com.tencent.wework.api.model;
import android.os.Bundle;
import android.util.Log;
import com.tencent.wework.api.model.WWMediaMessage.WWMediaObject;
/**
* Created by hu on 16/5/30.
*
*/
public class WWMediaLink extends WWMediaObject {
private static final String TAG = "WWAPI.WWMediaLink";
private static final int LENGTH_LIMIT = 10240;
/**
* ַ
*/
public String webpageUrl;
/**
* ͼ
*/
public String thumbUrl;
@Override
public int getType() {
return WWMediaObject.TYPE_URL;
}
@Override
public boolean checkArgs() {
if(!super.checkArgs()){
return false;
}
if (webpageUrl != null && webpageUrl.length() != 0 && webpageUrl.length() <= LENGTH_LIMIT) {
return true;
} else {
Log.d(TAG, "checkArgs fail, webpageUrl is invalid");
return false;
}
}
public void toBundle(Bundle var1) {
var1.putString("_wwwebpageobject_thumbUrl", thumbUrl);
var1.putString("_wwwebpageobject_webpageUrl", webpageUrl);
super.toBundle(var1);
}
public void fromBundle(Bundle var1) {
thumbUrl = var1.getString("_wwwebpageobject_thumbUrl");
webpageUrl = var1.getString("_wwwebpageobject_webpageUrl");
super.fromBundle(var1);
}
}
package com.tencent.wework.api.model;
import android.os.Bundle;
import android.util.Log;
/**
* Created by hu on 16/5/30.
* λ
*/
public class WWMediaLocation extends WWMediaMessage.WWMediaObject {
private static final String TAG = "WWAPI.WWMediaLocation";
private static final int LENGTH_LIMIT = 10240;
public String address;
public double longitude;
public double latitude;
public double zoom;
public WWMediaLocation(){
}
@Override
public int getType() {
return WWMediaObject.TYPE_LOC;
}
@Override
public boolean checkArgs() {
if(!super.checkArgs()){
return false;
}
if (this.address != null && this.address.length() != 0 && this.address.length() <= LENGTH_LIMIT) {
return true;
} else {
Log.d(TAG, "checkArgs fail, text is invalid");
return false;
}
}
public void toBundle(Bundle var1) {
var1.putString("_wwlocobject_address", address);
var1.putDouble("_wwlocobject_longitude", longitude);
var1.putDouble("_wwlocobject_latitude", latitude);
var1.putDouble("_wwlocobject_zoom", zoom);
super.toBundle(var1);
}
public void fromBundle(Bundle var1) {
address = var1.getString("_wwlocobject_address");
longitude = var1.getDouble("_wwlocobject_longitude");
latitude = var1.getDouble("_wwlocobject_latitude");
zoom = var1.getDouble("_wwlocobject_zoom");
super.fromBundle(var1);
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment