Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
polysoft-nafmii
/
polysoft-android
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit f4913a1b
authored
May 13, 2021
by
amateur
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1
1 parent
c789005d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
35 additions
and
89 deletions
app/src/main/java/com/polysoft/nafmii/webview/JavaToJsinterface.java
app/src/main/java/com/polysoft/nafmii/webview/JsToJavaInterface.java
app/src/main/java/com/polysoft/nafmii/webview/MyWebViewClient.java
app/src/main/java/com/polysoft/nafmii/wechat/ShareResult.java
app/src/main/java/com/polysoft/nafmii/webview/JavaToJsinterface.java
View file @
f4913a1
...
...
@@ -4,7 +4,6 @@ package com.polysoft.nafmii.webview;
import
android.util.Log
;
import
com.alibaba.fastjson.JSON
;
import
com.tencent.smtt.sdk.ValueCallback
;
import
com.tencent.smtt.sdk.WebView
;
public
class
JavaToJsinterface
{
...
...
@@ -18,12 +17,7 @@ public class JavaToJsinterface {
public
void
callJs
(
String
methodName
,
String
json
)
{
String
param
=
JSON
.
toJSONString
(
json
);
String
script
=
String
.
format
(
"javascript:$api.%s(%s)"
,
methodName
,
param
);
this
.
mWebView
.
evaluateJavascript
(
script
,
new
ValueCallback
<
String
>()
{
@Override
public
void
onReceiveValue
(
String
value
)
{
Log
.
d
(
TAG
,
String
.
format
(
"JavaToJsinterface: callJs is %s result : %s"
,
methodName
,
value
));
}
});
this
.
mWebView
.
evaluateJavascript
(
script
,
value
->
Log
.
d
(
TAG
,
String
.
format
(
"JavaToJsinterface: callJs is %s result : %s"
,
methodName
,
value
)));
}
}
app/src/main/java/com/polysoft/nafmii/webview/JsToJavaInterface.java
View file @
f4913a1
...
...
@@ -12,7 +12,6 @@ import com.alibaba.fastjson.JSONObject;
import
com.alibaba.fastjson.util.TypeUtils
;
import
com.polysoft.nafmii.bean.JsResult
;
import
com.polysoft.nafmii.broadcast.Receiver
;
import
com.polysoft.nafmii.broadcast.ReceiverListener
;
import
com.polysoft.nafmii.broadcast.ShareReceiver
;
import
com.polysoft.nafmii.utils.CtxUtils
;
import
com.polysoft.nafmii.utils.StatusBarUtils
;
...
...
@@ -24,8 +23,8 @@ import java.util.HashMap;
import
java.util.Map
;
public
class
JsToJavaInterface
{
private
Activity
mActivity
;
private
JavaToJsinterface
javaTojs
;
private
final
Activity
mActivity
;
private
final
JavaToJsinterface
javaTojs
;
private
Fragment
mFragment
;
public
JsToJavaInterface
(
Activity
activity
,
JavaToJsinterface
javaTojs
)
{
...
...
@@ -40,65 +39,45 @@ public class JsToJavaInterface {
@JavascriptInterface
public
void
nativeAppInfo
(
String
params
)
{
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
@Override
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
final
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<>();
PackageInfo
packageInfo
=
CtxUtils
.
getPackageInfo
();
dataMap
.
put
(
"versionCode"
,
packageInfo
.
versionCode
);
dataMap
.
put
(
"versionName"
,
packageInfo
.
versionName
);
dataMap
.
put
(
"statusBarHeight"
,
StatusBarUtils
.
getStatusBarHeight
(
mActivity
));
js
.
success
(
dataMap
);
}
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
(
data
,
js
)
->
{
final
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<>();
PackageInfo
packageInfo
=
CtxUtils
.
getPackageInfo
();
dataMap
.
put
(
"versionCode"
,
packageInfo
.
versionCode
);
dataMap
.
put
(
"versionName"
,
packageInfo
.
versionName
);
dataMap
.
put
(
"statusBarHeight"
,
StatusBarUtils
.
getStatusBarHeight
(
mActivity
));
js
.
success
(
dataMap
);
});
}
@JavascriptInterface
public
void
nativeMenu
(
String
params
)
{
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
@Override
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
(
data
,
js
)
->
{
}
});
}
@JavascriptInterface
public
void
nativeLogin
(
String
params
)
{
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
@Override
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
(
data
,
js
)
->
{
}
});
}
@JavascriptInterface
public
void
nativeShare
(
String
params
)
{
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
@Override
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
WechatApi
instance
=
WechatApi
.
getInstance
(
mActivity
);
if
(!
instance
.
isWXAppInstalled
())
{
js
.
callJs
(
JsResult
.
fail
(
"未安装应用"
));
}
final
Receiver
<
ShareResult
>
shareReceiver
=
ShareReceiver
.
getInstance
(
mActivity
);
shareReceiver
.
addDefaultListener
(
new
ReceiverListener
<
ShareResult
>()
{
@Override
public
void
onReceiverResult
(
String
action
,
ShareResult
share
)
{
js
.
callJs
(
new
JsResult
(
share
.
getStatus
(),
share
.
getStatusText
(),
null
));
shareReceiver
.
addDefaultListener
(
null
);
}
});
mActivity
.
runOnUiThread
(
new
Runnable
()
{
@Override
public
void
run
()
{
instance
.
share
(
mActivity
,
TypeUtils
.
castToJavaBean
(
data
,
ShareBean
.
class
));
}
});
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
(
data
,
js
)
->
{
WechatApi
instance
=
WechatApi
.
getInstance
(
mActivity
);
if
(!
instance
.
isWXAppInstalled
())
{
js
.
callJs
(
JsResult
.
fail
(
"未安装应用"
));
}
final
Receiver
<
ShareResult
>
shareReceiver
=
ShareReceiver
.
getInstance
(
mActivity
);
shareReceiver
.
addDefaultListener
((
action
,
share
)
->
{
js
.
callJs
(
share
);
shareReceiver
.
addDefaultListener
(
null
);
});
mActivity
.
runOnUiThread
(()
->
instance
.
share
(
mActivity
,
TypeUtils
.
castToJavaBean
(
data
,
ShareBean
.
class
)));
});
}
...
...
app/src/main/java/com/polysoft/nafmii/webview/MyWebViewClient.java
View file @
f4913a1
...
...
@@ -3,7 +3,6 @@ package com.polysoft.nafmii.webview;
import
android.content.Intent
;
import
android.graphics.Bitmap
;
import
android.net.Uri
;
import
android.util.Log
;
import
com.tencent.smtt.export.external.interfaces.SslError
;
import
com.tencent.smtt.export.external.interfaces.SslErrorHandler
;
...
...
@@ -17,7 +16,7 @@ import java.util.Map;
import
ren.yale.android.cachewebviewlib.WebViewCacheInterceptorInst
;
public
class
MyWebViewClient
extends
WebViewClient
{
private
WebviewLoadListener
listener
;
private
final
WebviewLoadListener
listener
;
public
MyWebViewClient
(
WebviewLoadListener
listener
)
{
this
.
listener
=
listener
;
...
...
app/src/main/java/com/polysoft/nafmii/wechat/ShareResult.java
View file @
f4913a1
...
...
@@ -2,52 +2,26 @@ package com.polysoft.nafmii.wechat;
import
android.text.TextUtils
;
import
com.
alibaba.fastjson.annotation.JSONField
;
import
com.
polysoft.nafmii.bean.JsResult
;
import
java.io.Serializable
;
public
class
ShareResult
extends
JsResult
{
public
static
final
String
CANCEL
=
"-2"
;
public
class
ShareResult
implements
Serializable
{
@JSONField
(
name
=
"status"
)
private
String
status
;
@JSONField
(
name
=
"statusText"
)
private
String
statusText
;
private
ShareResult
()
{
public
ShareResult
(
String
status
,
String
statusText
,
Object
data
)
{
super
(
status
,
statusText
,
data
);
}
private
ShareResult
(
String
status
,
String
statusText
)
{
this
.
status
=
status
;
this
.
statusText
=
statusText
;
public
static
JsResult
shareSuccess
()
{
return
JsResult
.
success
(
"分享成功"
,
null
);
}
public
static
ShareResult
shareSuccess
()
{
return
new
ShareResult
(
"0"
,
"分享成功"
);
}
public
static
ShareResult
shareFail
(
String
text
)
{
public
static
JsResult
shareFail
(
String
text
)
{
String
statusText
=
TextUtils
.
isEmpty
(
text
)
?
text
:
"分享失败"
;
return
new
ShareResult
(
"-1"
,
statusText
);
}
public
static
ShareResult
shareCancel
()
{
return
new
ShareResult
(
"-2"
,
"分享取消"
);
}
public
String
getStatus
()
{
return
status
;
return
JsResult
.
fail
(
statusText
);
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
public
static
JsResult
shareCancel
(
)
{
return
new
JsResult
(
CANCEL
,
"分享取消"
,
null
)
;
}
public
String
getStatusText
()
{
return
statusText
;
}
public
void
setStatusText
(
String
statusText
)
{
this
.
statusText
=
statusText
;
}
}
Write
Preview
Markdown
is supported
Attach a file
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 post a comment