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 {
...
@@ -21,7 +21,7 @@ public class JsResult {
private
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
.
status
=
status
;
this
.
statusText
=
statusText
;
this
.
statusText
=
statusText
;
this
.
data
=
data
;
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;
...
@@ -2,7 +2,6 @@ package com.polysoft.nafmii.webview;
import
android.Manifest
;
import
android.Manifest
;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.content.pm.PackageInfo
;
import
android.content.pm.PackageInfo
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.webkit.JavascriptInterface
;
import
android.webkit.JavascriptInterface
;
...
@@ -11,12 +10,11 @@ import androidx.fragment.app.Fragment;
...
@@ -11,12 +10,11 @@ import androidx.fragment.app.Fragment;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.util.TypeUtils
;
import
com.polysoft.nafmii.broadcast.Receiver
;
import
com.polysoft.nafmii.broadcast.Receiver
;
import
com.polysoft.nafmii.broadcast.ReceiverListener
;
import
com.polysoft.nafmii.broadcast.ReceiverListener
;
import
com.polysoft.nafmii.broadcast.ShareReceiver
;
import
com.polysoft.nafmii.broadcast.ShareReceiver
;
import
com.polysoft.nafmii.utils.CtxUtils
;
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.utils.StatusBarUtils
;
import
com.polysoft.nafmii.wechat.ShareBean
;
import
com.polysoft.nafmii.wechat.ShareBean
;
import
com.polysoft.nafmii.wechat.ShareResult
;
import
com.polysoft.nafmii.wechat.ShareResult
;
...
@@ -42,67 +40,76 @@ public class JsToJavaInterface {
...
@@ -42,67 +40,76 @@ public class JsToJavaInterface {
@JavascriptInterface
@JavascriptInterface
public
void
nativeAppInfo
(
String
params
)
{
public
void
nativeAppInfo
(
String
params
)
{
String
jsMethodName
=
null
;
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
try
{
@Override
JSONObject
json
=
JSONObject
.
parseObject
(
params
);
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
jsMethodName
=
json
.
getString
(
"jsMethodName"
);
final
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<>();
PackageInfo
packageInfo
=
CtxUtils
.
getPackageInfo
();
final
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<>();
dataMap
.
put
(
"versionCode"
,
packageInfo
.
versionCode
);
PackageInfo
packageInfo
=
CtxUtils
.
getPackageInfo
();
dataMap
.
put
(
"versionName"
,
packageInfo
.
versionName
);
dataMap
.
put
(
"versionCode"
,
packageInfo
.
versionCode
);
dataMap
.
put
(
"statusBarHeight"
,
StatusBarUtils
.
getStatusBarHeight
(
mActivity
));
dataMap
.
put
(
"versionName"
,
packageInfo
.
versionName
);
js
.
success
(
dataMap
);
dataMap
.
put
(
"statusBarHeight"
,
StatusBarUtils
.
getStatusBarHeight
(
this
.
mActivity
));
}
this
.
sendMessage2Js
(
jsMethodName
,
JSON
.
toJSONString
(
dataMap
));
});
}
catch
(
Exception
e
)
{
}
e
.
printStackTrace
();
}
@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
@JavascriptInterface
public
void
nativeLogin
(
String
params
)
{
public
void
nativeLogin
(
String
params
)
{
try
{
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
final
JSONObject
json
=
JSONObject
.
parseObject
(
params
);
@Override
final
String
jsMethodName
=
json
.
getString
(
"jsMethodName"
);
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
final
String
data
=
json
.
getString
(
"data"
);
}
catch
(
Exception
e
)
{
}
e
.
printStackTrace
();
});
}
}
}
@JavascriptInterface
@JavascriptInterface
public
void
nativeShare
(
String
params
)
{
public
void
nativeShare
(
String
params
)
{
final
JSONObject
json
=
JSONObject
.
parseObject
(
params
);
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
final
String
jsMethodName
=
json
.
getString
(
"jsMethodName"
);
this
.
mActivity
.
runOnUiThread
(
new
Runnable
()
{
@Override
@Override
public
void
run
(
)
{
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
WechatApi
instance
=
WechatApi
.
getInstance
(
mActivity
);
WechatApi
instance
=
WechatApi
.
getInstance
(
mActivity
);
if
(!
instance
.
isWXAppInstalled
())
{
if
(!
instance
.
isWXAppInstalled
())
{
String
dataJson
=
JSON
.
toJSONString
(
ShareResult
.
shareFail
(
"未安装应用"
));
js
.
callJs
(
JsResult
.
fail
(
"未安装应用"
));
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
));
}
}
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
@JavascriptInterface
public
void
nativeCamera
(
String
params
)
{
public
void
nativeCamera
(
String
params
)
{
final
JSONObject
json
=
JSONObject
.
parseObject
(
params
);
new
JsInterfaceHandler
(
mActivity
,
javaTojs
).
parse
(
params
,
new
JsInterfaceHandler
.
JsHandle
()
{
final
String
jsMethodName
=
json
.
getString
(
"jsMethodName"
);
@Override
final
JSONObject
data
=
json
.
getJSONObject
(
"data"
);
public
void
handle
(
JSONObject
data
,
JsInterfaceHandler
.
JsInterface
js
)
{
}
});
String
permissions
[]
=
{
String
permissions
[]
=
{
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
Manifest
.
permission
.
READ_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