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 6fc4c18c
authored
Jul 29, 2021
by
amateur
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1
1 parent
14d7e47f
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
219 additions
and
47 deletions
app/src/main/AndroidManifest.xml
app/src/main/assets/dist.zip
app/src/main/java/com/polysoft/nafmii/bean/Result.java
app/src/main/java/com/polysoft/nafmii/constants/Constants.java
app/src/main/java/com/polysoft/nafmii/enums/ModulesEnum.java
app/src/main/java/com/polysoft/nafmii/fragment/FingerprintDialogFragment.java
app/src/main/java/com/polysoft/nafmii/fragment/dialog/FingerprintDialog.java
app/src/main/java/com/polysoft/nafmii/utils/CtxUtils.java
app/src/main/java/com/polysoft/nafmii/utils/ToastUtils.java
app/src/main/java/com/polysoft/nafmii/utils/ZipUtils.java
app/src/main/java/com/polysoft/nafmii/webview/NativeApi.java
app/src/main/java/com/whaty/nafmii/activity/AdvertisementWebviewActvity.java
app/src/main/java/com/whaty/nafmii/activity/HomeActivity.java
app/src/main/java/com/whaty/nafmii/activity/MainActivity.java
app/src/main/AndroidManifest.xml
View file @
6fc4c18
...
...
@@ -36,13 +36,16 @@
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.VIEW"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<category
android:name=
"android.intent.category.BROWSABLE"
/>
<data
android:host=
"app"
android:pathPrefix=
"/open"
android:host=
"
jp.
app"
android:pathPrefix=
"/open
with
"
android:scheme=
"nafmii"
/>
</intent-filter>
</activity>
...
...
app/src/main/assets/dist.zip
0 → 100644
View file @
6fc4c18
No preview for this file type
app/src/main/java/com/polysoft/nafmii/bean/Result.java
View file @
6fc4c18
...
...
@@ -5,8 +5,8 @@ import com.alibaba.fastjson.annotation.JSONField;
public
class
Result
{
public
static
final
String
FAIL
=
"-1"
;
public
static
final
String
SUCCESS
=
"0"
;
public
static
final
String
FAIL
=
"1"
;
@JSONField
(
name
=
"status"
)
protected
String
status
;
...
...
@@ -71,4 +71,5 @@ public class Result {
public
static
Result
fail
(
String
statusText
)
{
return
fail
(
statusText
,
null
);
}
}
app/src/main/java/com/polysoft/nafmii/constants/Constants.java
View file @
6fc4c18
...
...
@@ -2,7 +2,7 @@ package com.polysoft.nafmii.constants;
public
class
Constants
{
public
static
final
String
MODULE_URL_HOME
=
"file:///
android_asset
/dist/index.html#/"
;
public
static
final
String
MODULE_URL_HOME
=
"file:///
data/user/0/com.whaty.nafmii.dev/files
/dist/index.html#/"
;
public
static
final
String
MODULE_URL_MY
=
"file:///android_asset/dist/index.html#/user/center"
;
public
static
final
String
MODULE_URL_MEMBER
=
""
;
public
static
final
String
MODULE_URL_LEARN
=
"http://debugtbs.qq.com"
;
...
...
app/src/main/java/com/polysoft/nafmii/enums/ModulesEnum.java
View file @
6fc4c18
...
...
@@ -2,10 +2,10 @@ package com.polysoft.nafmii.enums;
public
enum
ModulesEnum
{
HOME
(
"home"
,
"home"
,
"file:///android_asset/dist/index.html#/
"
),
MEMBER
(
"member"
,
"
home"
,
"file:///android_asset/dist/index.html#/home
"
),
HOME
(
"home"
,
"home"
,
"#/home
"
),
MEMBER
(
"member"
,
"
member"
,
"#/member/login
"
),
LEARN
(
"learn"
,
"learn"
,
"http://debugtbs.qq.com"
),
MY
(
"my"
,
"
home"
,
"file:///android_asset/dist/index.html
#/user/center"
);
MY
(
"my"
,
"
my"
,
"
#/user/center"
);
public
final
String
name
;
public
final
String
fmtKey
;
...
...
app/src/main/java/com/polysoft/nafmii/fragment/FingerprintDialogFragment.java
View file @
6fc4c18
...
...
@@ -60,12 +60,9 @@ public class FingerprintDialogFragment extends DialogFragment {
View
v
=
inflater
.
inflate
(
R
.
layout
.
fingerprint_dialog
,
container
,
false
);
errorMsg
=
v
.
findViewById
(
R
.
id
.
error_msg
);
TextView
cancel
=
v
.
findViewById
(
R
.
id
.
cancel
);
cancel
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
dismiss
();
stopListening
();
}
cancel
.
setOnClickListener
(
v1
->
{
dismiss
();
stopListening
();
});
return
v
;
}
...
...
app/src/main/java/com/polysoft/nafmii/fragment/dialog/FingerprintDialog.java
View file @
6fc4c18
package
com
.
polysoft
.
nafmii
.
fragment
.
dialog
;
import
android.annotation.TargetApi
;
import
android.app.KeyguardManager
;
import
android.hardware.fingerprint.FingerprintManager
;
import
android.os.Bundle
;
import
android.os.CancellationSignal
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
...
...
@@ -11,32 +13,147 @@ import android.widget.TextView;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.fragment.app.DialogFragment
;
import
androidx.fragment.app.FragmentManager
;
import
com.polysoft.nafmii.bean.Result
;
import
com.polysoft.nafmii.utils.CtxUtils
;
import
com.polysoft.nafmii.utils.ToastUtils
;
import
com.whaty.nafmii.R
;
import
java.util.Objects
;
@TargetApi
(
23
)
public
class
FingerprintDialog
extends
DialogFragment
{
private
FingerprintManager
mFingerprintMgr
;
private
CancellationSignal
mCancellationSignal
;
private
TextView
errorMsg
;
private
AuthBackListener
mAuthBackListener
;
public
static
void
show
(
FragmentManager
manager
,
AuthBackListener
listener
)
{
FingerprintDialog
dialog
=
new
FingerprintDialog
();
dialog
.
setAuthBackListener
(
listener
);
if
(
dialog
.
isSupportFingerprint
())
{
dialog
.
show
(
manager
,
"Fingerprint"
);
}
}
@Override
public
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
super
.
setStyle
(
DialogFragment
.
STYLE_NORMAL
,
android
.
R
.
style
.
Theme_Material_Light_Dialog
);
this
.
mFingerprintMgr
=
super
.
getContext
().
getSystemService
(
FingerprintManager
.
class
);
super
.
setCancelable
(
false
);
this
.
mFingerprintMgr
=
CtxUtils
.
getSystemService
(
FingerprintManager
.
class
);
}
@Nullable
@Override
public
View
onCreateView
(
@NonNull
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
public
View
onCreateView
(
@NonNull
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
View
view
=
inflater
.
inflate
(
R
.
layout
.
fingerprint_dialog
,
container
,
false
);
this
.
errorMsg
=
view
.
findViewById
(
R
.
id
.
error_msg
);
view
.
findViewById
(
R
.
id
.
cancel
).
setOnClickListener
((
v
)
->{
dismiss
();
});
view
.
findViewById
(
R
.
id
.
cancel
).
setOnClickListener
((
v
)
->
cancel
());
return
view
;
}
@Override
public
void
onResume
()
{
super
.
onResume
();
this
.
start
();
}
@Override
public
void
onPause
()
{
super
.
onPause
();
this
.
stop
();
}
public
void
setAuthBackListener
(
AuthBackListener
listener
)
{
this
.
mAuthBackListener
=
listener
;
}
private
void
start
()
{
this
.
mCancellationSignal
=
new
CancellationSignal
();
mFingerprintMgr
.
authenticate
(
null
,
this
.
mCancellationSignal
,
0
,
new
AuthBackImpl
(),
null
);
}
private
void
stop
()
{
if
(
null
!=
this
.
mCancellationSignal
)
{
this
.
mCancellationSignal
.
cancel
();
this
.
mCancellationSignal
=
null
;
}
}
private
void
cancel
()
{
this
.
closeBack
(
Result
.
success
(
"cancel"
));
}
private
void
success
()
{
this
.
closeBack
(
Result
.
success
(
"ok"
));
}
private
void
error
(
String
error
)
{
this
.
closeBack
(
Result
.
fail
(
error
));
}
private
void
closeBack
(
Result
result
)
{
super
.
dismiss
();
if
(
null
!=
this
.
mAuthBackListener
)
{
this
.
mAuthBackListener
.
onAuthBack
(
result
);
}
}
@Override
public
void
show
(
@NonNull
FragmentManager
manager
,
@Nullable
String
tag
)
{
super
.
show
(
manager
,
tag
);
}
private
boolean
isSupportFingerprint
()
{
FingerprintManager
fingerprintMgr
=
CtxUtils
.
getSystemService
(
FingerprintManager
.
class
);
if
(
null
!=
fingerprintMgr
&&
!
fingerprintMgr
.
isHardwareDetected
())
{
this
.
error
(
"您的手机不支持指纹功能"
);
return
false
;
}
KeyguardManager
keyMgr
=
CtxUtils
.
getSystemService
(
KeyguardManager
.
class
);
if
(
keyMgr
!=
null
&&
!
keyMgr
.
isKeyguardSecure
())
{
this
.
error
(
"您还未设置锁屏,请先设置锁屏并添加一个指纹"
);
return
false
;
}
if
(
null
!=
fingerprintMgr
&&
!
fingerprintMgr
.
hasEnrolledFingerprints
())
{
this
.
error
(
"您至少需要在系统设置中添加一个指纹"
);
return
false
;
}
return
true
;
}
private
class
AuthBackImpl
extends
FingerprintManager
.
AuthenticationCallback
{
@Override
public
void
onAuthenticationError
(
int
errorCode
,
CharSequence
errString
)
{
errorMsg
.
setText
(
errString
);
}
@Override
public
void
onAuthenticationHelp
(
int
helpCode
,
CharSequence
helpString
)
{
errorMsg
.
setText
(
helpString
);
}
@Override
public
void
onAuthenticationSucceeded
(
FingerprintManager
.
AuthenticationResult
result
)
{
ToastUtils
.
showLong
(
"认证成功"
);
success
();
}
@Override
public
void
onAuthenticationFailed
()
{
errorMsg
.
setText
(
"指纹认证失败,请再试一次"
);
}
}
public
interface
AuthBackListener
{
void
onAuthBack
(
Result
result
);
}
}
app/src/main/java/com/polysoft/nafmii/utils/CtxUtils.java
View file @
6fc4c18
...
...
@@ -28,6 +28,10 @@ public class CtxUtils {
return
getAssetsManager
().
open
(
fileName
);
}
public
static
<
T
>
T
getSystemService
(
Class
<
T
>
c
)
{
return
getApplication
().
getSystemService
(
c
);
}
public
static
PackageInfo
getPackageInfo
()
{
PackageManager
manager
=
getApplication
().
getPackageManager
();
...
...
app/src/main/java/com/polysoft/nafmii/utils/ToastUtils.java
View file @
6fc4c18
...
...
@@ -6,14 +6,14 @@ public class ToastUtils {
public
static
void
showLong
(
String
message
)
{
Toast
toast
=
Toast
.
makeText
(
CtxUtils
.
getApplication
(),
null
,
Toast
.
LENGTH_LONG
);
Toast
toast
=
Toast
.
makeText
(
CtxUtils
.
getApplication
(),
""
,
Toast
.
LENGTH_LONG
);
toast
.
setText
(
message
);
toast
.
show
();
// Toast.makeText(CtxUtils.getApplication(), message, Toast.LENGTH_LONG).show();
}
public
static
void
showShort
(
String
message
)
{
Toast
toast
=
Toast
.
makeText
(
CtxUtils
.
getApplication
(),
null
,
Toast
.
LENGTH_SHORT
);
Toast
toast
=
Toast
.
makeText
(
CtxUtils
.
getApplication
(),
""
,
Toast
.
LENGTH_SHORT
);
toast
.
setText
(
message
);
toast
.
show
();
// Toast.makeText(CtxUtils.getApplication(), message, Toast.LENGTH_SHORT).show();
...
...
app/src/main/java/com/polysoft/nafmii/utils/ZipUtils.java
View file @
6fc4c18
package
com
.
polysoft
.
nafmii
.
utils
;
import
android.net.Uri
;
import
com.whaty.nafmii.BuildConfig
;
import
java.io.File
;
import
java.io.FileInputStream
;
...
...
@@ -14,6 +14,9 @@ import java.util.zip.ZipInputStream;
public
class
ZipUtils
{
public
static
void
unZipDistAssets
()
{
if
(
BuildConfig
.
DEBUG
)
{
FileUtils
.
deletes
(
FileUtils
.
getDistDir
());
}
// 已经存在,则不解压
if
(
FileUtils
.
getIndex
().
exists
())
{
return
;
...
...
app/src/main/java/com/polysoft/nafmii/webview/NativeApi.java
View file @
6fc4c18
...
...
@@ -2,12 +2,10 @@ 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
;
import
androidx.fragment.app.Fragment
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.util.TypeUtils
;
...
...
@@ -18,13 +16,15 @@ import com.polysoft.nafmii.broadcast.ShareReceiver;
import
com.polysoft.nafmii.database.ObjectBox
;
import
com.polysoft.nafmii.database.entity.DataEntity
;
import
com.polysoft.nafmii.enums.DatabaseEnum
;
import
com.polysoft.nafmii.fragment.dialog.FingerprintDialog
;
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.WechatApi
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -61,7 +61,14 @@ public class NativeApi {
@JavascriptInterface
public
void
nativeLogin
(
String
params
)
{
new
JsInterfaceHandler
(
handler
).
parse
(
params
,
(
data
,
js
)
->
{
String
type
=
data
.
getString
(
"type"
);
if
(
"1"
.
equals
(
type
))
{
// 指纹人脸
this
.
mActivity
.
runOnUiThread
(()->
FingerprintDialog
.
show
(
handler
.
getFragmentManager
(),
result
->
{
js
.
callJs
(
result
);
}));
}
else
if
(
"2"
.
equals
(
type
))
{
// 微信
}
});
}
...
...
@@ -97,8 +104,8 @@ public class NativeApi {
@JavascriptInterface
public
void
nativeBackIntercept
(
String
param
)
{
new
JsInterfaceHandler
(
handler
).
parse
(
param
,
(
data
,
js
)
->
{
Boolean
type
=
data
.
getBoolean
(
"typ
e"
);
handler
.
setBackIntercept
(
null
==
type
?
false
:
typ
e
);
Boolean
value
=
data
.
getBoolean
(
"valu
e"
);
handler
.
setBackIntercept
(
null
==
value
?
false
:
valu
e
);
js
.
success
(
null
);
});
}
...
...
@@ -111,7 +118,7 @@ public class NativeApi {
List
<
DataEntity
>
list
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
datas
.
size
();
i
++)
{
JSONObject
item
=
datas
.
getJSONObject
(
i
);
String
key
=
item
.
getString
(
"
key
"
);
String
key
=
item
.
getString
(
"
name
"
);
Object
valueObj
=
item
.
get
(
"value"
);
list
.
add
(
new
DataEntity
(
key
,
null
==
valueObj
?
null
:
valueObj
.
toString
()));
}
...
...
@@ -119,7 +126,8 @@ public class NativeApi {
if
(
DatabaseEnum
.
GET
.
name
.
equals
(
type
))
{
js
.
success
(
ObjectBox
.
findList
(
arrays
));
return
;
}
if
(
DatabaseEnum
.
SAVE
.
name
.
equals
(
type
))
{
}
if
(
DatabaseEnum
.
SAVE
.
name
.
equals
(
type
))
{
ObjectBox
.
put
(
arrays
);
}
else
if
(
DatabaseEnum
.
DELETE
.
name
.
equals
(
type
))
{
ObjectBox
.
delete
(
arrays
);
...
...
@@ -136,20 +144,15 @@ public class NativeApi {
}
});
String
permissions
[]
=
{
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
,
Manifest
.
permission
.
CAMERA
,
};
// if (PermissionUtils.checkPermissions(this.mActivity, permissions)) {
// this.photosReceiverListener(jsMethodName);
// Intent intent = IntentUtils.openCamera(this.mActivity);
// this.mFragment.startActivityForResult(intent, IntentUtils.ACTIVITY_CODE_CAMERA);
// }
String
permissions
[]
=
{
Manifest
.
permission
.
CAMERA
};
if
(
PermissionUtils
.
checkAndRequestMorePermissions
(
this
.
mActivity
,
permissions
))
{
Intent
intent
=
IntentUtils
.
openCamera
(
this
.
mActivity
);
handler
.
getFragment
().
startActivityForResult
(
intent
,
IntentUtils
.
ACTIVITY_CODE_CAMERA
);
}
}
//
//
@JavascriptInterface
// public void callN
ativeAlbum(String params) {
@JavascriptInterface
public
void
n
ativeAlbum
(
String
params
)
{
// final JSONObject json = JSONObject.parseObject(params);
// final String jsMethodName = json.getString("jsMethodName");
// final JSONObject data = json.getJSONObject("data");
...
...
@@ -163,8 +166,8 @@ public class NativeApi {
// Intent intent = IntentUtils.openAlbum(this.mActivity);
// this.mFragment.startActivityForResult(intent, IntentUtils.ACTIVITY_CODE_ALBUM);
// }
//
}
//
}
// @JavascriptInterface
// public void callNativeUpdate(String params) {
// final JSONObject json = JSONObject.parseObject(params);
...
...
@@ -227,4 +230,6 @@ public class NativeApi {
// });
// }
}
app/src/main/java/com/whaty/nafmii/activity/AdvertisementWebviewActvity.java
0 → 100644
View file @
6fc4c18
package
com
.
whaty
.
nafmii
.
activity
;
import
android.os.Bundle
;
import
android.view.KeyEvent
;
import
androidx.fragment.app.FragmentManager
;
import
androidx.fragment.app.FragmentTransaction
;
import
com.polysoft.nafmii.fragment.WebViewFragment
;
import
com.polysoft.nafmii.utils.IntentUtils
;
import
com.whaty.nafmii.R
;
public
class
AdvertisementWebviewActvity
extends
WebviewActivity
{
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_advertisement
);
}
@Override
public
void
onCoreInitFinished
(
boolean
flag
)
{
initView
();
}
private
void
initView
()
{
int
containerId
=
R
.
id
.
advertisement_framelayout
;
FragmentManager
manager
=
getSupportFragmentManager
();
WebViewFragment
fragment
=
WebViewFragment
.
newInstance
(
"https://m.baidu.com/"
);
FragmentTransaction
transaction
=
manager
.
beginTransaction
();
transaction
.
replace
(
containerId
,
fragment
,
"advertisement"
).
commitNow
();
// manager.beginTransaction().show(fragment).commitNow();
}
@Override
public
boolean
onKeyDown
(
int
keyCode
,
KeyEvent
event
)
{
IntentUtils
.
startActivity
(
this
,
TestHomeActivity
.
class
);
return
false
;
}
}
app/src/main/java/com/whaty/nafmii/activity/HomeActivity.java
View file @
6fc4c18
...
...
@@ -9,8 +9,8 @@ import androidx.fragment.app.Fragment;
import
com.polysoft.nafmii.bean.MenuBean
;
import
com.polysoft.nafmii.enums.ModulesEnum
;
import
com.whaty.nafmii.R
;
import
com.polysoft.nafmii.fragment.home.ModulesFragmentMgr
;
import
com.whaty.nafmii.R
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
app/src/main/java/com/whaty/nafmii/activity/MainActivity.java
View file @
6fc4c18
...
...
@@ -23,6 +23,7 @@ public class MainActivity extends BaseActivity {
private
AdvertisementViewModel
.
LiveData
mAdvertisementData
;
private
final
String
FIRST_RUN_KEY
=
getFirstRunKey
();
private
boolean
isAdvertisement
=
false
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -90,10 +91,11 @@ public class MainActivity extends BaseActivity {
}
private
synchronized
void
showAdvertisement
()
{
boolean
isReturn
=
null
==
this
.
mAdvertisementData
||
!
this
.
isFirstRun
();
if
(
isReturn
||
super
.
isFragmentExists
(
AdvertisementFragment
.
class
))
{
if
(
null
==
this
.
mAdvertisementData
||
!
this
.
isFirstRun
()
||
this
.
isAdvertisement
)
{
return
;
}
this
.
isAdvertisement
=
true
;
if
(
this
.
mAdvertisementData
.
empty
())
{
this
.
dispatchEvent
(
IActivityEvent
.
EVENT_ADVERTISEMENT
);
return
;
...
...
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