Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
frontend
Template Taro Rn
Commits
ebb7dca2
Commit
ebb7dca2
authored
Nov 18, 2021
by
silver47gin
Browse files
增加Taro-RN代码
parent
fc039aac
Changes
137
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1219 additions
and
0 deletions
+1219
-0
template/android/app/src/main/AndroidManifest.xml
template/android/app/src/main/AndroidManifest.xml
+33
-0
template/android/app/src/main/java/com/calendar/CalendarModule.java
...ndroid/app/src/main/java/com/calendar/CalendarModule.java
+31
-0
template/android/app/src/main/java/com/calendar/CalendarPackage.java
...droid/app/src/main/java/com/calendar/CalendarPackage.java
+29
-0
template/android/app/src/main/java/com/tarodemo/MainActivity.java
.../android/app/src/main/java/com/tarodemo/MainActivity.java
+15
-0
template/android/app/src/main/java/com/tarodemo/MainApplication.java
...droid/app/src/main/java/com/tarodemo/MainApplication.java
+99
-0
template/android/app/src/main/java/com/tencent/wework/WWNativeModule.java
.../app/src/main/java/com/tencent/wework/WWNativeModule.java
+69
-0
template/android/app/src/main/java/com/tencent/wework/WWPackage.java
...droid/app/src/main/java/com/tencent/wework/WWPackage.java
+29
-0
template/android/app/src/main/java/com/tencent/wework/api/IWWAPI.java
...roid/app/src/main/java/com/tencent/wework/api/IWWAPI.java
+58
-0
template/android/app/src/main/java/com/tencent/wework/api/IWWAPIEventHandler.java
.../main/java/com/tencent/wework/api/IWWAPIEventHandler.java
+10
-0
template/android/app/src/main/java/com/tencent/wework/api/WWAPIFactory.java
...pp/src/main/java/com/tencent/wework/api/WWAPIFactory.java
+18
-0
template/android/app/src/main/java/com/tencent/wework/api/WWAPIImpl.java
...d/app/src/main/java/com/tencent/wework/api/WWAPIImpl.java
+182
-0
template/android/app/src/main/java/com/tencent/wework/api/model/BaseMessage.java
...c/main/java/com/tencent/wework/api/model/BaseMessage.java
+85
-0
template/android/app/src/main/java/com/tencent/wework/api/model/WWAuthMessage.java
...main/java/com/tencent/wework/api/model/WWAuthMessage.java
+128
-0
template/android/app/src/main/java/com/tencent/wework/api/model/WWBaseMessage.java
...main/java/com/tencent/wework/api/model/WWBaseMessage.java
+56
-0
template/android/app/src/main/java/com/tencent/wework/api/model/WWBaseRespMessage.java
.../java/com/tencent/wework/api/model/WWBaseRespMessage.java
+66
-0
template/android/app/src/main/java/com/tencent/wework/api/model/WWMediaConversation.java
...ava/com/tencent/wework/api/model/WWMediaConversation.java
+98
-0
template/android/app/src/main/java/com/tencent/wework/api/model/WWMediaFile.java
...c/main/java/com/tencent/wework/api/model/WWMediaFile.java
+70
-0
template/android/app/src/main/java/com/tencent/wework/api/model/WWMediaImage.java
.../main/java/com/tencent/wework/api/model/WWMediaImage.java
+36
-0
template/android/app/src/main/java/com/tencent/wework/api/model/WWMediaLink.java
...c/main/java/com/tencent/wework/api/model/WWMediaLink.java
+53
-0
template/android/app/src/main/java/com/tencent/wework/api/model/WWMediaLocation.java
...in/java/com/tencent/wework/api/model/WWMediaLocation.java
+54
-0
No files found.
template/android/app/src/main/AndroidManifest.xml
0 → 100644
View file @
ebb7dca2
<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
template/android/app/src/main/java/com/calendar/CalendarModule.java
0 → 100644
View file @
ebb7dca2
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
template/android/app/src/main/java/com/calendar/CalendarPackage.java
0 → 100644
View file @
ebb7dca2
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
template/android/app/src/main/java/com/tarodemo/MainActivity.java
0 → 100644
View file @
ebb7dca2
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"
;
}
}
template/android/app/src/main/java/com/tarodemo/MainApplication.java
0 → 100644
View file @
ebb7dca2
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
();
}
}
}
}
template/android/app/src/main/java/com/tencent/wework/WWNativeModule.java
0 → 100644
View file @
ebb7dca2
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
template/android/app/src/main/java/com/tencent/wework/WWPackage.java
0 → 100644
View file @
ebb7dca2
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
template/android/app/src/main/java/com/tencent/wework/api/IWWAPI.java
0 → 100644
View file @
ebb7dca2
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
();
}
template/android/app/src/main/java/com/tencent/wework/api/IWWAPIEventHandler.java
0 → 100644
View file @
ebb7dca2
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
);
}
template/android/app/src/main/java/com/tencent/wework/api/WWAPIFactory.java
0 → 100644
View file @
ebb7dca2
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"
);
}
}
template/android/app/src/main/java/com/tencent/wework/api/WWAPIImpl.java
0 → 100644
View file @
ebb7dca2
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
;
}
}
}
template/android/app/src/main/java/com/tencent/wework/api/model/BaseMessage.java
0 → 100644
View file @
ebb7dca2
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
;
}
template/android/app/src/main/java/com/tencent/wework/api/model/WWAuthMessage.java
0 → 100644
View file @
ebb7dca2
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
;
}
}
}
}
template/android/app/src/main/java/com/tencent/wework/api/model/WWBaseMessage.java
0 → 100644
View file @
ebb7dca2
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
;
}
template/android/app/src/main/java/com/tencent/wework/api/model/WWBaseRespMessage.java
0 → 100644
View file @
ebb7dca2
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
;
}
template/android/app/src/main/java/com/tencent/wework/api/model/WWMediaConversation.java
0 → 100644
View file @
ebb7dca2
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
);
}
}
}
template/android/app/src/main/java/com/tencent/wework/api/model/WWMediaFile.java
0 → 100644
View file @
ebb7dca2
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
;
}
}
template/android/app/src/main/java/com/tencent/wework/api/model/WWMediaImage.java
0 → 100644
View file @
ebb7dca2
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
;
}
}
template/android/app/src/main/java/com/tencent/wework/api/model/WWMediaLink.java
0 → 100644
View file @
ebb7dca2
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
);
}
}
template/android/app/src/main/java/com/tencent/wework/api/model/WWMediaLocation.java
0 → 100644
View file @
ebb7dca2
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
);
}
}
Prev
1
2
3
4
5
6
7
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment