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 dbaa8116
authored
May 13, 2021
by
amateur
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1
1 parent
5b24f83e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
132 additions
and
45 deletions
app/src/main/java/com/polysoft/nafmii/webview/JsInterfaceHandler.java
app/src/main/java/com/polysoft/nafmii/webview/JsResult.java
app/src/main/java/com/polysoft/nafmii/webview/JsToJavaInterface.java
app/src/main/java/com/polysoft/nafmii/webview/JsInterfaceHandler.java
0 → 100644
View file @
dbaa811
package
com
.
polysoft
.
nafmii
.
webview
;
import
android.app.Activity
;
import
android.text.TextUtils
;
import
com.alibaba.fastjson.JSONObject
;
public
class
JsInterfaceHandler
{
private
Activity
mActivity
;
private
JavaToJsinterface
javaTojs
;
private
String
jsMethodName
;
public
JsInterfaceHandler
(
Activity
mActivity
,
JavaToJsinterface
javaTojs
)
{
this
.
mActivity
=
mActivity
;
this
.
javaTojs
=
javaTojs
;
}
public
void
parse
(
String
params
,
JsHandle
jsHandle
)
{
try
{
JSONObject
obj
=
JSONObject
.
parseObject
(
params
);
this
.
jsMethodName
=
obj
.
getString
(
"jsMethodName"
);
JSONObject
data
=
obj
.
getJSONObject
(
"data"
);
jsHandle
.
handle
(
data
,
new
JsInterfaceImpl
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
String
error
=
String
.
format
(
"接口调用异常"
);
this
.
sendMessage2Js
(
JsResult
.
fail
(
error
).
toString
());
}
}
private
void
sendMessage2Js
(
String
json
)
{
if
(
TextUtils
.
isEmpty
(
jsMethodName
))
{
return
;
}
if
(
"'main'"
.
equals
(
Thread
.
currentThread
().
getName
()))
{
javaTojs
.
callJs
(
jsMethodName
,
json
);
return
;
}
this
.
mActivity
.
runOnUiThread
(
new
Runnable
()
{
@Override
public
void
run
()
{
javaTojs
.
callJs
(
jsMethodName
,
json
);
}
});
}
class
JsInterfaceImpl
implements
JsInterface
{
@Override
public
void
callJs
(
JsResult
result
)
{
sendMessage2Js
(
result
.
toString
());
}
@Override
public
void
success
(
Object
obj
)
{
this
.
callJs
(
JsResult
.
success
(
obj
));
}
@Override
public
void
fail
(
String
statusText
)
{
this
.
callJs
(
JsResult
.
fail
(
statusText
));
}
}
public
interface
JsHandle
{
void
handle
(
JSONObject
data
,
JsInterface
js
);
}
public
interface
JsInterface
{
void
callJs
(
JsResult
result
);
void
success
(
Object
obj
);
void
fail
(
String
statusText
);
}
}
app/src/main/java/com/polysoft/nafmii/webview/JsResult.java
View file @
dbaa811
...
...
@@ -21,7 +21,7 @@ public class JsResult {
private
JsResult
()
{
}
p
rivate
JsResult
(
String
status
,
String
statusText
,
Object
data
)
{
p
ublic
JsResult
(
String
status
,
String
statusText
,
Object
data
)
{
this
.
status
=
status
;
this
.
statusText
=
statusText
;
this
.
data
=
data
;
...
...
app/src/main/java/com/polysoft/nafmii/webview/JsToJavaInterface.java
View file @
dbaa811
...
...
@@ -2,7 +2,6 @@ package com.polysoft.nafmii.webview;
import
android.Manifest
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.content.pm.PackageInfo
;
import
android.text.TextUtils
;
import
android.webkit.JavascriptInterface
;
...
...
@@ -11,12 +10,11 @@ import androidx.fragment.app.Fragment;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.util.TypeUtils
;
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.IntentUtils
;
import
com.polysoft.nafmii.utils.PermissionUtils
;
import
com.polysoft.nafmii.utils.StatusBarUtils
;
import
com.polysoft.nafmii.wechat.ShareBean
;
import
com.polysoft.nafmii.wechat.ShareResult
;
...
...
@@ -42,67 +40,76 @@ public class JsToJavaInterface {
@JavascriptInterface
public
void
nativeAppInfo
(
String
params
)
{
String
jsMethodName
=
null
;
try
{
JSONObject
json
=
JSONObject
.
parseObject
(
params
);
jsMethodName
=
json
.
getString
(
"jsMethodName"
);
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
(
this
.
mActivity
));
this
.
sendMessage2Js
(
jsMethodName
,
JSON
.
toJSONString
(
dataMap
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
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
);
}
});
}
@JavascriptInterface
public
void
nativeMenu
(
String
params
)
{
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
@Override
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
}
});
}
@JavascriptInterface
public
void
nativeLogin
(
String
params
)
{
try
{
final
JSONObject
json
=
JSONObject
.
parseObject
(
params
);
final
String
jsMethodName
=
json
.
getString
(
"jsMethodName"
);
final
String
data
=
json
.
getString
(
"data"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
@Override
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
}
});
}
@JavascriptInterface
public
void
nativeShare
(
String
params
)
{
final
JSONObject
json
=
JSONObject
.
parseObject
(
params
);
final
String
jsMethodName
=
json
.
getString
(
"jsMethodName"
);
this
.
mActivity
.
runOnUiThread
(
new
Runnable
()
{
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
@Override
public
void
run
(
)
{
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
WechatApi
instance
=
WechatApi
.
getInstance
(
mActivity
);
if
(!
instance
.
isWXAppInstalled
())
{
String
dataJson
=
JSON
.
toJSONString
(
ShareResult
.
shareFail
(
"未安装应用"
));
javaTojs
.
callJs
(
jsMethodName
,
dataJson
);
}
else
{
final
Receiver
<
ShareResult
>
shareReceiver
=
ShareReceiver
.
getInstance
(
mActivity
);
shareReceiver
.
addDefaultListener
(
new
ReceiverListener
<
ShareResult
>()
{
@Override
public
void
onReceiverResult
(
String
action
,
ShareResult
data
)
{
javaTojs
.
callJs
(
jsMethodName
,
JSON
.
toJSONString
(
data
));
shareReceiver
.
addDefaultListener
(
null
);
}
});
instance
.
share
(
mActivity
,
json
.
getObject
(
"data"
,
ShareBean
.
class
));
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
));
}
});
}
});
}
@JavascriptInterface
public
void
nativeCamera
(
String
params
)
{
final
JSONObject
json
=
JSONObject
.
parseObject
(
params
);
final
String
jsMethodName
=
json
.
getString
(
"jsMethodName"
);
final
JSONObject
data
=
json
.
getJSONObject
(
"data"
);
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
@Override
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
}
});
String
permissions
[]
=
{
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
,
...
...
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