Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
lib_base
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sikang
lib_base
Commits
8b268077
Commit
8b268077
authored
Dec 15, 2018
by
sikang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复权限被绕过BUG
parent
8d6c04be
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
673 additions
and
414 deletions
+673
-414
src/main/java/tech/starwin/mvp/beans/HistoryLoanAppInfoBean.java
+1
-3
src/main/java/tech/starwin/mvp/beans/LatestLoanAppBean.java
+372
-25
src/main/java/tech/starwin/mvp/beans/LoanAppBeanFather.java
+0
-379
src/main/java/tech/starwin/mvp/presenter/UploadPresenter.java
+5
-1
src/main/java/tech/starwin/utils/BrandUtils.java
+205
-0
src/main/java/tech/starwin/utils/context_utils/ActivityJumper.java
+65
-0
src/main/java/tech/starwin/utils/context_utils/PermissionsHelper.java
+25
-6
No files found.
src/main/java/tech/starwin/mvp/beans/HistoryLoanAppInfoBean.java
View file @
8b268077
...
@@ -2,8 +2,6 @@ package tech.starwin.mvp.beans;
...
@@ -2,8 +2,6 @@ package tech.starwin.mvp.beans;
import
android.os.Parcelable
;
import
android.os.Parcelable
;
import
java.io.Serializable
;
/**
/**
* @作者:XJY
* @作者:XJY
* @创建日期: 2017/3/15 14:58
* @创建日期: 2017/3/15 14:58
...
@@ -13,7 +11,7 @@ import java.io.Serializable;
...
@@ -13,7 +11,7 @@ import java.io.Serializable;
* @更新描述:${TODO}
* @更新描述:${TODO}
*/
*/
public
class
HistoryLoanAppInfoBean
extends
L
oanAppBeanFather
implements
Parcelable
{
public
class
HistoryLoanAppInfoBean
extends
L
atestLoanAppBean
implements
Parcelable
{
/**
/**
...
...
src/main/java/tech/starwin/mvp/beans/LatestLoanAppBean.java
View file @
8b268077
package
tech
.
starwin
.
mvp
.
beans
;
package
tech
.
starwin
.
mvp
.
beans
;
import
android.os.Parcel
;
import
android.os.Parcelable
;
import
android.os.Parcelable
;
import
java.io.Serializable
;
public
class
LatestLoanAppBean
implements
Parcelable
{
/**
* Created by Miaoke on 2017/3/6.
*/
public
class
LatestLoanAppBean
extends
LoanAppBeanFather
implements
Parcelable
{
/**
* amount ; 0
* bankCode ; BCA
* cardNo ; string
* cost ; 0
* createTime ; 2017-03-23T01;56;23.652Z
* credentialNo ; string
* dueDate ; 2017-03-23T01;56;23.652Z
* loanAppId ; 0
* paidAmount ; 0
* period ; 0
* periodUnit ; D
* remainAmount ; 0
* status ; string
* statusLogs ; [{"createTime";"2017-03-23T01;56;23.652Z","status";"string"}]
* totalAmount ; 0
*/
public
static
final
String
WITHDRAWN
=
"WITHDRAWN"
;
//撤回
public
static
final
String
WITHDRAWN
=
"WITHDRAWN"
;
//撤回
public
static
final
String
GRACE_PERIOD
=
"GRACE_PERIOD"
;
//撤回
public
static
final
String
GRACE_PERIOD
=
"GRACE_PERIOD"
;
//撤回
...
@@ -44,6 +21,81 @@ public class LatestLoanAppBean extends LoanAppBeanFather implements Parcelable {
...
@@ -44,6 +21,81 @@ public class LatestLoanAppBean extends LoanAppBeanFather implements Parcelable {
public
static
final
String
REJECTED
=
"REJECTED"
;
//贷款被拒绝
public
static
final
String
REJECTED
=
"REJECTED"
;
//贷款被拒绝
public
static
final
String
CLOSED
=
"CLOSED"
;
//贷款申请已关闭
public
static
final
String
CLOSED
=
"CLOSED"
;
//贷款申请已关闭
public
static
final
Creator
<
LatestLoanAppBean
>
CREATOR
=
new
Creator
<
LatestLoanAppBean
>()
{
@Override
public
LatestLoanAppBean
createFromParcel
(
Parcel
source
)
{
LatestLoanAppBean
var
=
new
LatestLoanAppBean
();
var
.
serviceFeeAccr
=
source
.
readDouble
();
var
.
statusLogs
=
source
.
createTypedArray
(
LoanAppBeanFatherStatusLogs
.
CREATOR
);
var
.
dueDate
=
source
.
readString
();
var
.
remainingDays
=
source
.
readInt
();
var
.
minRepaymentAmount
=
source
.
readDouble
();
var
.
issueAmount
=
source
.
readDouble
();
var
.
cardNo
=
source
.
readString
();
var
.
periodUnit
=
source
.
readString
();
var
.
credentialNo
=
source
.
readString
();
var
.
remainAmount
=
source
.
readDouble
();
var
.
interestAccr
=
source
.
readDouble
();
var
.
defaultAccr
=
source
.
readDouble
();
var
.
issueDate
=
source
.
readString
();
var
.
defaultPaid
=
source
.
readDouble
();
var
.
interestPaid
=
source
.
readDouble
();
var
.
bankCode
=
source
.
readString
();
var
.
amount
=
source
.
readDouble
();
var
.
period
=
source
.
readInt
();
var
.
clearDate
=
source
.
readString
();
var
.
comments
=
source
.
readString
();
var
.
cost
=
source
.
readDouble
();
var
.
adjustAmount
=
source
.
readDouble
();
var
.
principalPaid
=
source
.
readDouble
();
var
.
totalAmount
=
source
.
readDouble
();
var
.
principalAccr
=
source
.
readDouble
();
var
.
createTime
=
source
.
readString
();
var
.
dueAmount
=
source
.
readDouble
();
var
.
serviceFeePaid
=
source
.
readDouble
();
var
.
loanAppId
=
source
.
readString
();
var
.
paidAmount
=
source
.
readDouble
();
var
.
status
=
source
.
readString
();
return
var
;
}
@Override
public
LatestLoanAppBean
[]
newArray
(
int
size
)
{
return
new
LatestLoanAppBean
[
size
];
}
};
private
double
serviceFeeAccr
;
private
LoanAppBeanFatherStatusLogs
[]
statusLogs
;
private
String
dueDate
;
private
int
remainingDays
;
private
double
minRepaymentAmount
;
private
double
issueAmount
;
private
String
cardNo
;
private
String
periodUnit
;
private
String
credentialNo
;
private
double
remainAmount
;
private
double
interestAccr
;
private
double
defaultAccr
;
private
String
issueDate
;
private
double
defaultPaid
;
private
double
interestPaid
;
private
String
bankCode
;
private
double
amount
;
private
int
period
;
private
String
clearDate
;
private
String
comments
;
private
double
cost
;
private
double
adjustAmount
;
private
double
principalPaid
;
private
double
totalAmount
;
private
double
principalAccr
;
private
String
createTime
;
private
double
dueAmount
;
private
double
serviceFeePaid
;
private
String
loanAppId
;
private
double
paidAmount
;
private
String
status
;
private
long
productId
;
private
String
applyFor
;
private
String
applyFor
;
private
String
applyChannel
;
private
String
applyChannel
;
private
long
couponId
;
private
long
couponId
;
...
@@ -71,4 +123,299 @@ public class LatestLoanAppBean extends LoanAppBeanFather implements Parcelable {
...
@@ -71,4 +123,299 @@ public class LatestLoanAppBean extends LoanAppBeanFather implements Parcelable {
public
void
setCouponId
(
long
couponId
)
{
public
void
setCouponId
(
long
couponId
)
{
this
.
couponId
=
couponId
;
this
.
couponId
=
couponId
;
}
}
public
long
getProductId
()
{
return
productId
;
}
public
void
setProductId
(
long
productId
)
{
this
.
productId
=
productId
;
}
public
double
getServiceFeeAccr
()
{
return
this
.
serviceFeeAccr
;
}
public
void
setServiceFeeAccr
(
double
serviceFeeAccr
)
{
this
.
serviceFeeAccr
=
serviceFeeAccr
;
}
public
LoanAppBeanFatherStatusLogs
[]
getStatusLogs
()
{
return
this
.
statusLogs
;
}
public
void
setStatusLogs
(
LoanAppBeanFatherStatusLogs
[]
statusLogs
)
{
this
.
statusLogs
=
statusLogs
;
}
public
String
getDueDate
()
{
return
this
.
dueDate
;
}
public
void
setDueDate
(
String
dueDate
)
{
this
.
dueDate
=
dueDate
;
}
public
int
getRemainingDays
()
{
return
this
.
remainingDays
;
}
public
void
setRemainingDays
(
int
remainingDays
)
{
this
.
remainingDays
=
remainingDays
;
}
public
double
getMinRepaymentAmount
()
{
return
this
.
minRepaymentAmount
;
}
public
void
setMinRepaymentAmount
(
double
minRepaymentAmount
)
{
this
.
minRepaymentAmount
=
minRepaymentAmount
;
}
public
double
getIssueAmount
()
{
return
issueAmount
;
}
public
void
setIssueAmount
(
double
issueAmount
)
{
this
.
issueAmount
=
issueAmount
;
}
public
String
getCardNo
()
{
return
this
.
cardNo
;
}
public
void
setCardNo
(
String
cardNo
)
{
this
.
cardNo
=
cardNo
;
}
public
String
getPeriodUnit
()
{
return
this
.
periodUnit
;
}
public
void
setPeriodUnit
(
String
periodUnit
)
{
this
.
periodUnit
=
periodUnit
;
}
public
String
getCredentialNo
()
{
return
this
.
credentialNo
;
}
public
void
setCredentialNo
(
String
credentialNo
)
{
this
.
credentialNo
=
credentialNo
;
}
public
double
getRemainAmount
()
{
return
this
.
remainAmount
;
}
public
void
setRemainAmount
(
double
remainAmount
)
{
this
.
remainAmount
=
remainAmount
;
}
public
double
getInterestAccr
()
{
return
this
.
interestAccr
;
}
public
void
setInterestAccr
(
double
interestAccr
)
{
this
.
interestAccr
=
interestAccr
;
}
public
double
getDefaultAccr
()
{
return
this
.
defaultAccr
;
}
public
void
setDefaultAccr
(
double
defaultAccr
)
{
this
.
defaultAccr
=
defaultAccr
;
}
public
String
getIssueDate
()
{
return
this
.
issueDate
;
}
public
void
setIssueDate
(
String
issueDate
)
{
this
.
issueDate
=
issueDate
;
}
public
double
getDefaultPaid
()
{
return
this
.
defaultPaid
;
}
public
void
setDefaultPaid
(
double
defaultPaid
)
{
this
.
defaultPaid
=
defaultPaid
;
}
public
double
getInterestPaid
()
{
return
this
.
interestPaid
;
}
public
void
setInterestPaid
(
double
interestPaid
)
{
this
.
interestPaid
=
interestPaid
;
}
public
String
getBankCode
()
{
return
this
.
bankCode
;
}
public
void
setBankCode
(
String
bankCode
)
{
this
.
bankCode
=
bankCode
;
}
public
double
getAmount
()
{
return
this
.
amount
;
}
public
void
setAmount
(
double
amount
)
{
this
.
amount
=
amount
;
}
public
int
getPeriod
()
{
return
this
.
period
;
}
public
void
setPeriod
(
int
period
)
{
this
.
period
=
period
;
}
public
String
getClearDate
()
{
return
this
.
clearDate
;
}
public
void
setClearDate
(
String
clearDate
)
{
this
.
clearDate
=
clearDate
;
}
public
String
getComments
()
{
return
this
.
comments
;
}
public
void
setComments
(
String
comments
)
{
this
.
comments
=
comments
;
}
public
double
getCost
()
{
return
this
.
cost
;
}
public
void
setCost
(
double
cost
)
{
this
.
cost
=
cost
;
}
public
double
getAdjustAmount
()
{
return
this
.
adjustAmount
;
}
public
void
setAdjustAmount
(
double
adjustAmount
)
{
this
.
adjustAmount
=
adjustAmount
;
}
public
double
getPrincipalPaid
()
{
return
this
.
principalPaid
;
}
public
void
setPrincipalPaid
(
double
principalPaid
)
{
this
.
principalPaid
=
principalPaid
;
}
public
double
getTotalAmount
()
{
return
this
.
totalAmount
;
}
public
void
setTotalAmount
(
double
totalAmount
)
{
this
.
totalAmount
=
totalAmount
;
}
public
double
getPrincipalAccr
()
{
return
this
.
principalAccr
;
}
public
void
setPrincipalAccr
(
double
principalAccr
)
{
this
.
principalAccr
=
principalAccr
;
}
public
String
getCreateTime
()
{
return
this
.
createTime
;
}
public
void
setCreateTime
(
String
createTime
)
{
this
.
createTime
=
createTime
;
}
public
double
getDueAmount
()
{
return
this
.
dueAmount
;
}
public
void
setDueAmount
(
double
dueAmount
)
{
this
.
dueAmount
=
dueAmount
;
}
public
double
getServiceFeePaid
()
{
return
this
.
serviceFeePaid
;
}
public
void
setServiceFeePaid
(
double
serviceFeePaid
)
{
this
.
serviceFeePaid
=
serviceFeePaid
;
}
public
String
getLoanAppId
()
{
return
this
.
loanAppId
;
}
public
void
setLoanAppId
(
String
loanAppId
)
{
this
.
loanAppId
=
loanAppId
;
}
public
double
getPaidAmount
()
{
return
this
.
paidAmount
;
}
public
void
setPaidAmount
(
double
paidAmount
)
{
this
.
paidAmount
=
paidAmount
;
}
public
String
getStatus
()
{
return
this
.
status
==
null
?
""
:
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
@Override
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeDouble
(
this
.
serviceFeeAccr
);
dest
.
writeTypedArray
(
this
.
statusLogs
,
flags
);
dest
.
writeString
(
this
.
dueDate
);
dest
.
writeInt
(
this
.
remainingDays
);
dest
.
writeDouble
(
this
.
minRepaymentAmount
);
dest
.
writeDouble
(
this
.
issueAmount
);
dest
.
writeString
(
this
.
cardNo
);
dest
.
writeString
(
this
.
periodUnit
);
dest
.
writeString
(
this
.
credentialNo
);
dest
.
writeDouble
(
this
.
remainAmount
);
dest
.
writeDouble
(
this
.
interestAccr
);
dest
.
writeDouble
(
this
.
defaultAccr
);
dest
.
writeString
(
this
.
issueDate
);
dest
.
writeDouble
(
this
.
defaultPaid
);
dest
.
writeDouble
(
this
.
interestPaid
);
dest
.
writeString
(
this
.
bankCode
);
dest
.
writeDouble
(
this
.
amount
);
dest
.
writeInt
(
this
.
period
);
dest
.
writeString
(
this
.
clearDate
);
dest
.
writeString
(
this
.
comments
);
dest
.
writeDouble
(
this
.
cost
);
dest
.
writeDouble
(
this
.
adjustAmount
);
dest
.
writeDouble
(
this
.
principalPaid
);
dest
.
writeDouble
(
this
.
totalAmount
);
dest
.
writeDouble
(
this
.
principalAccr
);
dest
.
writeString
(
this
.
createTime
);
dest
.
writeDouble
(
this
.
dueAmount
);
dest
.
writeDouble
(
this
.
serviceFeePaid
);
dest
.
writeString
(
this
.
loanAppId
);
dest
.
writeDouble
(
this
.
paidAmount
);
dest
.
writeString
(
this
.
status
);
}
@Override
public
int
describeContents
()
{
return
0
;
}
}
}
src/main/java/tech/starwin/mvp/beans/LoanAppBeanFather.java
deleted
100644 → 0
View file @
8d6c04be
package
tech
.
starwin
.
mvp
.
beans
;
import
android.os.Parcel
;
import
android.os.Parcelable
;
public
class
LoanAppBeanFather
implements
Parcelable
{
public
static
final
Creator
<
LoanAppBeanFather
>
CREATOR
=
new
Creator
<
LoanAppBeanFather
>()
{
@Override
public
LoanAppBeanFather
createFromParcel
(
Parcel
source
)
{
LoanAppBeanFather
var
=
new
LoanAppBeanFather
();
var
.
serviceFeeAccr
=
source
.
readDouble
();
var
.
statusLogs
=
source
.
createTypedArray
(
LoanAppBeanFatherStatusLogs
.
CREATOR
);
var
.
dueDate
=
source
.
readString
();
var
.
remainingDays
=
source
.
readInt
();
var
.
minRepaymentAmount
=
source
.
readDouble
();
var
.
issueAmount
=
source
.
readDouble
();
var
.
cardNo
=
source
.
readString
();
var
.
periodUnit
=
source
.
readString
();
var
.
credentialNo
=
source
.
readString
();
var
.
remainAmount
=
source
.
readDouble
();
var
.
interestAccr
=
source
.
readDouble
();
var
.
defaultAccr
=
source
.
readDouble
();
var
.
issueDate
=
source
.
readString
();
var
.
defaultPaid
=
source
.
readDouble
();
var
.
interestPaid
=
source
.
readDouble
();
var
.
bankCode
=
source
.
readString
();
var
.
amount
=
source
.
readDouble
();
var
.
period
=
source
.
readInt
();
var
.
clearDate
=
source
.
readString
();
var
.
comments
=
source
.
readString
();
var
.
cost
=
source
.
readDouble
();
var
.
adjustAmount
=
source
.
readDouble
();
var
.
principalPaid
=
source
.
readDouble
();
var
.
totalAmount
=
source
.
readDouble
();
var
.
principalAccr
=
source
.
readDouble
();
var
.
createTime
=
source
.
readString
();
var
.
dueAmount
=
source
.
readDouble
();
var
.
serviceFeePaid
=
source
.
readDouble
();
var
.
loanAppId
=
source
.
readString
();
var
.
paidAmount
=
source
.
readDouble
();
var
.
status
=
source
.
readString
();
return
var
;
}
@Override
public
LoanAppBeanFather
[]
newArray
(
int
size
)
{
return
new
LoanAppBeanFather
[
size
];
}
};
private
double
serviceFeeAccr
;
private
LoanAppBeanFatherStatusLogs
[]
statusLogs
;
private
String
dueDate
;
private
int
remainingDays
;
private
double
minRepaymentAmount
;
private
double
issueAmount
;
private
String
cardNo
;
private
String
periodUnit
;
private
String
credentialNo
;
private
double
remainAmount
;
private
double
interestAccr
;
private
double
defaultAccr
;
private
String
issueDate
;
private
double
defaultPaid
;
private
double
interestPaid
;
private
String
bankCode
;
private
double
amount
;
private
int
period
;
private
String
clearDate
;
private
String
comments
;
private
double
cost
;
private
double
adjustAmount
;
private
double
principalPaid
;
private
double
totalAmount
;
private
double
principalAccr
;
private
String
createTime
;
private
double
dueAmount
;
private
double
serviceFeePaid
;
private
String
loanAppId
;
private
double
paidAmount
;
private
String
status
;
private
long
productId
;
public
long
getProductId
()
{
return
productId
;
}
public
void
setProductId
(
long
productId
)
{
this
.
productId
=
productId
;
}
public
double
getServiceFeeAccr
()
{
return
this
.
serviceFeeAccr
;
}
public
void
setServiceFeeAccr
(
double
serviceFeeAccr
)
{
this
.
serviceFeeAccr
=
serviceFeeAccr
;
}
public
LoanAppBeanFatherStatusLogs
[]
getStatusLogs
()
{
return
this
.
statusLogs
;
}
public
void
setStatusLogs
(
LoanAppBeanFatherStatusLogs
[]
statusLogs
)
{
this
.
statusLogs
=
statusLogs
;
}
public
String
getDueDate
()
{
return
this
.
dueDate
;
}
public
void
setDueDate
(
String
dueDate
)
{
this
.
dueDate
=
dueDate
;
}
public
int
getRemainingDays
()
{
return
this
.
remainingDays
;
}
public
void
setRemainingDays
(
int
remainingDays
)
{
this
.
remainingDays
=
remainingDays
;
}
public
double
getMinRepaymentAmount
()
{
return
this
.
minRepaymentAmount
;
}
public
void
setMinRepaymentAmount
(
double
minRepaymentAmount
)
{
this
.
minRepaymentAmount
=
minRepaymentAmount
;
}
public
double
getIssueAmount
()
{
return
issueAmount
;
}
public
void
setIssueAmount
(
double
issueAmount
)
{
this
.
issueAmount
=
issueAmount
;
}
public
String
getCardNo
()
{
return
this
.
cardNo
;
}
public
void
setCardNo
(
String
cardNo
)
{
this
.
cardNo
=
cardNo
;
}
public
String
getPeriodUnit
()
{
return
this
.
periodUnit
;
}
public
void
setPeriodUnit
(
String
periodUnit
)
{
this
.
periodUnit
=
periodUnit
;
}
public
String
getCredentialNo
()
{
return
this
.
credentialNo
;
}
public
void
setCredentialNo
(
String
credentialNo
)
{
this
.
credentialNo
=
credentialNo
;
}
public
double
getRemainAmount
()
{
return
this
.
remainAmount
;
}
public
void
setRemainAmount
(
double
remainAmount
)
{
this
.
remainAmount
=
remainAmount
;
}
public
double
getInterestAccr
()
{
return
this
.
interestAccr
;
}
public
void
setInterestAccr
(
double
interestAccr
)
{
this
.
interestAccr
=
interestAccr
;
}
public
double
getDefaultAccr
()
{
return
this
.
defaultAccr
;
}
public
void
setDefaultAccr
(
double
defaultAccr
)
{
this
.
defaultAccr
=
defaultAccr
;
}
public
String
getIssueDate
()
{
return
this
.
issueDate
;
}
public
void
setIssueDate
(
String
issueDate
)
{
this
.
issueDate
=
issueDate
;
}
public
double
getDefaultPaid
()
{
return
this
.
defaultPaid
;
}
public
void
setDefaultPaid
(
double
defaultPaid
)
{
this
.
defaultPaid
=
defaultPaid
;
}
public
double
getInterestPaid
()
{
return
this
.
interestPaid
;
}
public
void
setInterestPaid
(
double
interestPaid
)
{
this
.
interestPaid
=
interestPaid
;
}
public
String
getBankCode
()
{
return
this
.
bankCode
;
}
public
void
setBankCode
(
String
bankCode
)
{
this
.
bankCode
=
bankCode
;
}
public
double
getAmount
()
{
return
this
.
amount
;
}
public
void
setAmount
(
double
amount
)
{
this
.
amount
=
amount
;
}
public
int
getPeriod
()
{
return
this
.
period
;
}
public
void
setPeriod
(
int
period
)
{
this
.
period
=
period
;
}
public
String
getClearDate
()
{
return
this
.
clearDate
;
}
public
void
setClearDate
(
String
clearDate
)
{
this
.
clearDate
=
clearDate
;
}
public
String
getComments
()
{
return
this
.
comments
;
}
public
void
setComments
(
String
comments
)
{
this
.
comments
=
comments
;
}
public
double
getCost
()
{
return
this
.
cost
;
}
public
void
setCost
(
double
cost
)
{
this
.
cost
=
cost
;
}
public
double
getAdjustAmount
()
{
return
this
.
adjustAmount
;
}
public
void
setAdjustAmount
(
double
adjustAmount
)
{
this
.
adjustAmount
=
adjustAmount
;
}
public
double
getPrincipalPaid
()
{
return
this
.
principalPaid
;
}
public
void
setPrincipalPaid
(
double
principalPaid
)
{
this
.
principalPaid
=
principalPaid
;
}
public
double
getTotalAmount
()
{
return
this
.
totalAmount
;
}
public
void
setTotalAmount
(
double
totalAmount
)
{
this
.
totalAmount
=
totalAmount
;
}
public
double
getPrincipalAccr
()
{
return
this
.
principalAccr
;
}
public
void
setPrincipalAccr
(
double
principalAccr
)
{
this
.
principalAccr
=
principalAccr
;
}
public
String
getCreateTime
()
{
return
this
.
createTime
;
}
public
void
setCreateTime
(
String
createTime
)
{
this
.
createTime
=
createTime
;
}
public
double
getDueAmount
()
{
return
this
.
dueAmount
;
}
public
void
setDueAmount
(
double
dueAmount
)
{
this
.
dueAmount
=
dueAmount
;
}
public
double
getServiceFeePaid
()
{
return
this
.
serviceFeePaid
;
}
public
void
setServiceFeePaid
(
double
serviceFeePaid
)
{
this
.
serviceFeePaid
=
serviceFeePaid
;
}
public
String
getLoanAppId
()
{
return
this
.
loanAppId
;
}
public
void
setLoanAppId
(
String
loanAppId
)
{
this
.
loanAppId
=
loanAppId
;
}
public
double
getPaidAmount
()
{
return
this
.
paidAmount
;
}
public
void
setPaidAmount
(
double
paidAmount
)
{
this
.
paidAmount
=
paidAmount
;
}
public
String
getStatus
()
{
return
this
.
status
==
null
?
""
:
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
@Override
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeDouble
(
this
.
serviceFeeAccr
);
dest
.
writeTypedArray
(
this
.
statusLogs
,
flags
);
dest
.
writeString
(
this
.
dueDate
);
dest
.
writeInt
(
this
.
remainingDays
);
dest
.
writeDouble
(
this
.
minRepaymentAmount
);
dest
.
writeDouble
(
this
.
issueAmount
);
dest
.
writeString
(
this
.
cardNo
);
dest
.
writeString
(
this
.
periodUnit
);
dest
.
writeString
(
this
.
credentialNo
);
dest
.
writeDouble
(
this
.
remainAmount
);
dest
.
writeDouble
(
this
.
interestAccr
);
dest
.
writeDouble
(
this
.
defaultAccr
);
dest
.
writeString
(
this
.
issueDate
);
dest
.
writeDouble
(
this
.
defaultPaid
);
dest
.
writeDouble
(
this
.
interestPaid
);
dest
.
writeString
(
this
.
bankCode
);
dest
.
writeDouble
(
this
.
amount
);
dest
.
writeInt
(
this
.
period
);
dest
.
writeString
(
this
.
clearDate
);
dest
.
writeString
(
this
.
comments
);
dest
.
writeDouble
(
this
.
cost
);
dest
.
writeDouble
(
this
.
adjustAmount
);
dest
.
writeDouble
(
this
.
principalPaid
);
dest
.
writeDouble
(
this
.
totalAmount
);
dest
.
writeDouble
(
this
.
principalAccr
);
dest
.
writeString
(
this
.
createTime
);
dest
.
writeDouble
(
this
.
dueAmount
);
dest
.
writeDouble
(
this
.
serviceFeePaid
);
dest
.
writeString
(
this
.
loanAppId
);
dest
.
writeDouble
(
this
.
paidAmount
);
dest
.
writeString
(
this
.
status
);
}
@Override
public
int
describeContents
()
{
return
0
;
}
}
src/main/java/tech/starwin/mvp/presenter/UploadPresenter.java
View file @
8b268077
...
@@ -73,6 +73,10 @@ public class UploadPresenter extends BasePresenter<UploadApi> {
...
@@ -73,6 +73,10 @@ public class UploadPresenter extends BasePresenter<UploadApi> {
* 上传依图 截取得帧图片
* 上传依图 截取得帧图片
*/
*/
public
void
faceVerify
(
final
String
action
,
Context
context
,
double
amount
,
int
day
,
long
productId
)
{
public
void
faceVerify
(
final
String
action
,
Context
context
,
double
amount
,
int
day
,
long
productId
)
{
faceVerify
(
action
,
context
,
PreferencesManager
.
get
().
getVerificationData
(),
amount
,
day
,
productId
);
}
public
void
faceVerify
(
final
String
action
,
Context
context
,
String
faceData
,
double
amount
,
int
day
,
long
productId
)
{
TrackEventHelper
.
logEvent
(
TrackEvent
.
FACE_DETECTION
);
TrackEventHelper
.
logEvent
(
TrackEvent
.
FACE_DETECTION
);
handleRequest
(
handleRequest
(
apiService
.
faceVerify
(
apiService
.
faceVerify
(
...
@@ -82,7 +86,7 @@ public class UploadPresenter extends BasePresenter<UploadApi> {
...
@@ -82,7 +86,7 @@ public class UploadPresenter extends BasePresenter<UploadApi> {
"D"
,
"D"
,
null
,
null
,
null
,
null
,
MultipartBodyMaker
.
makeSimplePart
(
"delta"
,
PreferencesManager
.
get
().
getVerificationData
()
),
MultipartBodyMaker
.
makeSimplePart
(
"delta"
,
faceData
),
AppInfoUtils
.
getAndroidID
(
context
),
AppInfoUtils
.
getAndroidID
(
context
),
productId
,
productId
,
LoginManager
.
get
().
getToken
()
LoginManager
.
get
().
getToken
()
...
...
src/main/java/tech/starwin/utils/BrandUtils.java
0 → 100644
View file @
8b268077
package
tech
.
starwin
.
utils
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.content.pm.PackageManager
;
import
android.content.pm.ResolveInfo
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Environment
;
import
android.provider.Settings
;
import
android.text.TextUtils
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.lang.reflect.Method
;
import
java.util.List
;
import
java.util.Properties
;
/**
* 网络资源
*/
public
class
BrandUtils
{
/**
* 华为
*/
public
static
final
String
SYS_EMUI
=
"sys_emui"
;
/**
* 小米
*/
public
static
final
String
SYS_MIUI
=
"sys_miui"
;
/**
* 魅族
*/
public
static
final
String
SYS_FLYME
=
"sys_flyme"
;
public
static
final
String
SYS_OPPO
=
"sys_oppo"
;
public
static
final
String
SYS_VIVO
=
"sys_vivo"
;
public
static
final
String
SYS_SAMSUNG
=
"sys_samsung"
;
public
static
final
String
SYS_HTC
=
"sys_htc"
;
public
static
final
String
SYS_LG
=
"sys_lg"
;
public
static
final
String
SYS_ZTE
=
"sys_zte"
;
/**
* 锤子
*/
public
static
final
String
SYS_SMARTISAN
=
"sys_smartisan"
;
public
static
final
String
SYS_360
=
"sys_360"
;
public
static
final
String
KEY_OPPO_ROM
=
"ro.build.version.opporom"
;
public
static
final
String
KEY_VIVO_VERSION
=
"ro.vivo.os.version"
;
public
static
final
String
KEY_SMARTISAN_VERSION
=
"ro.smartisan.version"
;
public
static
final
String
KEY_360_MANUFACTURER
=
"QIKU"
;
public
static
final
String
KEY_360_MANUFACTURER2
=
"360"
;
private
static
final
String
KEY_MIUI_VERSION_CODE
=
"ro.miui.ui.version.code"
;
private
static
final
String
KEY_MIUI_VERSION_NAME
=
"ro.miui.ui.version.name"
;
private
static
final
String
KEY_MIUI_INTERNAL_STORAGE
=
"ro.miui.internal.storage"
;
private
static
final
String
KEY_EMUI_API_LEVEL
=
"ro.build.hw_emui_api_level"
;
private
static
final
String
KEY_EMUI_VERSION
=
"ro.build.version.emui"
;
private
static
final
String
KEY_EMUI_CONFIG_HW_SYS_VERSION
=
"ro.confg.hw_systemversion"
;
private
static
final
int
CODE_REQUEST_CAMERA_PERMISSIONS
=
1521
;
private
static
SystemInfo
systemInfoInstance
;
public
static
SystemInfo
getSystemInfo
()
{
if
(
systemInfoInstance
==
null
)
{
synchronized
(
BrandUtils
.
class
)
{
if
(
systemInfoInstance
==
null
)
{
systemInfoInstance
=
new
SystemInfo
();
getSystem
(
systemInfoInstance
);
}
}
}
return
systemInfoInstance
;
}
/**
* 获取系统信息
*
* @param info
*/
private
static
void
getSystem
(
SystemInfo
info
)
{
try
{
Properties
prop
=
new
Properties
();
prop
.
load
(
new
FileInputStream
(
new
File
(
Environment
.
getRootDirectory
(),
"build.prop"
)));
if
(
prop
.
getProperty
(
KEY_MIUI_VERSION_CODE
,
null
)
!=
null
||
prop
.
getProperty
(
KEY_MIUI_VERSION_NAME
,
null
)
!=
null
||
prop
.
getProperty
(
KEY_MIUI_INTERNAL_STORAGE
,
null
)
!=
null
)
{
info
.
os
=
SYS_MIUI
;
//小米
info
.
versionCode
=
Integer
.
valueOf
(
prop
.
getProperty
(
KEY_MIUI_VERSION_CODE
,
"0"
));
info
.
versionName
=
prop
.
getProperty
(
KEY_MIUI_VERSION_NAME
,
"V0"
);
}
else
if
(
prop
.
getProperty
(
KEY_EMUI_API_LEVEL
,
null
)
!=
null
||
prop
.
getProperty
(
KEY_EMUI_VERSION
,
null
)
!=
null
||
prop
.
getProperty
(
KEY_EMUI_CONFIG_HW_SYS_VERSION
,
null
)
!=
null
)
{
info
.
os
=
SYS_EMUI
;
//华为
info
.
versionCode
=
Integer
.
valueOf
(
prop
.
getProperty
(
KEY_EMUI_API_LEVEL
,
"0"
));
info
.
versionName
=
prop
.
getProperty
(
KEY_EMUI_VERSION
,
"unknown"
);
}
else
if
(
getMeizuFlymeOSFlag
().
toLowerCase
().
contains
(
"flyme"
))
{
info
.
os
=
SYS_FLYME
;
//魅族
info
.
versionCode
=
0
;
info
.
versionName
=
"unknown"
;
}
else
if
(
prop
.
getProperty
(
KEY_OPPO_ROM
,
null
)
!=
null
)
{
info
.
os
=
SYS_OPPO
;
info
.
versionCode
=
0
;
info
.
versionName
=
"unknown"
;
}
else
if
(
prop
.
getProperty
(
KEY_VIVO_VERSION
,
null
)
!=
null
){
info
.
os
=
SYS_VIVO
;
info
.
versionCode
=
0
;
info
.
versionName
=
prop
.
getProperty
(
KEY_VIVO_VERSION
,
null
);
}
else
if
(
prop
.
getProperty
(
KEY_SMARTISAN_VERSION
,
null
)
!=
null
){
info
.
os
=
SYS_SMARTISAN
;
info
.
versionCode
=
0
;
info
.
versionName
=
prop
.
getProperty
(
KEY_SMARTISAN_VERSION
,
null
);
}
else
if
(
Build
.
MANUFACTURER
!=
null
&&
(
Build
.
MANUFACTURER
.
equalsIgnoreCase
(
KEY_360_MANUFACTURER
)
||
Build
.
MANUFACTURER
.
equalsIgnoreCase
(
KEY_360_MANUFACTURER2
))){
info
.
os
=
SYS_360
;
info
.
versionCode
=
0
;
info
.
versionName
=
prop
.
getProperty
(
KEY_SMARTISAN_VERSION
,
null
);
}
else
{
String
manufacturer
=
Build
.
MANUFACTURER
;
if
(
manufacturer
!=
null
)
{
String
lManuf
=
manufacturer
.
toLowerCase
();
if
(
lManuf
.
contains
(
"htc"
))
{
info
.
os
=
SYS_HTC
;
}
else
if
(
lManuf
.
contains
(
"samsung"
)){
info
.
os
=
SYS_SAMSUNG
;
}
else
if
(
lManuf
.
contains
(
"lg"
)){
info
.
os
=
SYS_LG
;
}
else
if
(
lManuf
.
contains
(
"zte"
)){
info
.
os
=
SYS_ZTE
;
}
}
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
private
static
String
getMeizuFlymeOSFlag
()
{
return
getSystemProperty
(
"ro.build.display.id"
,
""
);
}
private
static
String
getSystemProperty
(
String
key
,
String
defaultValue
)
{
try
{
Class
<?>
clz
=
Class
.
forName
(
"android.os.SystemProperties"
);
Method
get
=
clz
.
getMethod
(
"get"
,
String
.
class
,
String
.
class
);
return
(
String
)
get
.
invoke
(
clz
,
key
,
defaultValue
);
}
catch
(
Exception
e
)
{
}
return
defaultValue
;
}
/**
* 跳转应用设置中心
*
* @param activity
*/
public
static
void
settingPermissionActivity
(
Activity
activity
)
{
//判断是否为小米系统
if
(
TextUtils
.
equals
(
getSystemInfo
().
getOs
(),
BrandUtils
.
SYS_MIUI
))
{
Intent
miuiIntent
=
new
Intent
(
"miui.intent.action.APP_PERM_EDITOR"
);
miuiIntent
.
putExtra
(
"extra_pkgname"
,
activity
.
getPackageName
());
//检测是否有能接受该Intent的Activity存在
List
<
ResolveInfo
>
resolveInfos
=
activity
.
getPackageManager
().
queryIntentActivities
(
miuiIntent
,
PackageManager
.
MATCH_DEFAULT_ONLY
);
if
(
resolveInfos
.
size
()
>
0
)
{
activity
.
startActivityForResult
(
miuiIntent
,
CODE_REQUEST_CAMERA_PERMISSIONS
);
return
;
}
}
//如果不是小米系统 则打开Android系统的应用设置页
Intent
intent
=
new
Intent
(
Settings
.
ACTION_APPLICATION_DETAILS_SETTINGS
);
Uri
uri
=
Uri
.
fromParts
(
"package"
,
activity
.
getPackageName
(),
null
);
intent
.
setData
(
uri
);
activity
.
startActivityForResult
(
intent
,
CODE_REQUEST_CAMERA_PERMISSIONS
);
}
public
static
class
SystemInfo
{
private
String
os
=
"android"
;
private
String
versionName
=
Build
.
VERSION
.
RELEASE
;
private
int
versionCode
=
Build
.
VERSION
.
SDK_INT
;
public
String
getOs
()
{
return
os
;
}
public
String
getVersionName
()
{
return
versionName
;
}
public
int
getVersionCode
()
{
return
versionCode
;
}
@Override
public
String
toString
()
{
return
"SystemInfo{"
+
"os='"
+
os
+
'\''
+
", versionName='"
+
versionName
+
'\''
+
", versionCode="
+
versionCode
+
'}'
;
}
}
}
\ No newline at end of file
src/main/java/tech/starwin/utils/context_utils/ActivityJumper.java
View file @
8b268077
package
tech
.
starwin
.
utils
.
context_utils
;
package
tech
.
starwin
.
utils
.
context_utils
;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.app.PendingIntent
;
import
android.content.Context
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.content.pm.PackageManager
;
import
android.content.pm.ResolveInfo
;
import
android.content.pm.ResolveInfo
;
import
android.location.LocationManager
;
import
android.net.Uri
;
import
android.net.Uri
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.os.Parcelable
;
import
android.os.Parcelable
;
import
android.provider.Settings
;
import
android.provider.Telephony
;
import
android.provider.Telephony
;
import
android.text.TextUtils
;
import
android.text.TextWatcher
;
import
android.text.TextWatcher
;
import
android.view.View
;
import
android.view.View
;
import
com.tbruyelle.rxpermissions2.Permission
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.List
;
import
tech.starwin.LibConfig
;
import
tech.starwin.LibConfig
;
import
tech.starwin.R
;
import
tech.starwin.R
;
import
tech.starwin.utils.BrandUtils
;
import
tech.starwin.utils.LogUtils
;
import
tech.starwin.utils.ui_utils.DialogFactory
;
import
tech.starwin.utils.ui_utils.DialogFactory
;
import
tech.starwin.utils.ui_utils.DialogManager
;
import
tech.starwin.utils.ui_utils.DialogManager
;
...
@@ -26,6 +35,7 @@ import tech.starwin.utils.ui_utils.DialogManager;
...
@@ -26,6 +35,7 @@ import tech.starwin.utils.ui_utils.DialogManager;
public
class
ActivityJumper
{
public
class
ActivityJumper
{
private
static
String
GP_APP_DETAIL_URL
=
"https://play.google.com/store/apps/details?id="
;
private
static
String
GP_APP_DETAIL_URL
=
"https://play.google.com/store/apps/details?id="
;
private
Intent
intent
;
private
Intent
intent
;
private
static
int
REQUEST_PERMISSION_CODE
=
0x000AF00
;
/**
/**
* 发起跳转的Context
* 发起跳转的Context
*/
*/
...
@@ -99,6 +109,61 @@ public class ActivityJumper {
...
@@ -99,6 +109,61 @@ public class ActivityJumper {
startGooglePlay
(
context
,
LibConfig
.
APPLICATION_ID
);
startGooglePlay
(
context
,
LibConfig
.
APPLICATION_ID
);
}
}
/**
* 跳转应用设置中心
*
* @param activity
*/
public
static
void
toPermissionSetting
(
Activity
activity
,
String
...
permissions
)
{
try
{
//判断是否为小米系统
if
(
TextUtils
.
equals
(
BrandUtils
.
getSystemInfo
().
getOs
(),
BrandUtils
.
SYS_MIUI
))
{
Intent
miuiIntent
=
new
Intent
(
"miui.intent.action.APP_PERM_EDITOR"
);
miuiIntent
.
putExtra
(
"extra_pkgname"
,
activity
.
getPackageName
());
//检测是否有能接受该Intent的Activity存在
List
<
ResolveInfo
>
resolveInfos
=
activity
.
getPackageManager
().
queryIntentActivities
(
miuiIntent
,
PackageManager
.
MATCH_DEFAULT_ONLY
);
if
(
resolveInfos
.
size
()
>
0
)
{
activity
.
startActivityForResult
(
miuiIntent
,
REQUEST_PERMISSION_CODE
);
return
;
}
}
//如果不是小米系统 则打开Android系统的应用设置页
Intent
intent
=
new
Intent
(
Settings
.
ACTION_APPLICATION_DETAILS_SETTINGS
);
Uri
uri
=
Uri
.
fromParts
(
"package"
,
activity
.
getPackageName
(),
null
);
intent
.
setData
(
uri
);
intent
.
putExtra
(
"go settion permission"
,
permissions
);
activity
.
startActivityForResult
(
intent
,
REQUEST_PERMISSION_CODE
);
}
catch
(
Throwable
e
)
{
LogUtils
.
e
(
"to setting permission activity error:"
,
e
.
getMessage
());
}
}
/**
* 打开GPS
*
* @param context
*/
public
static
final
void
openGPS
(
Context
context
)
{
LocationManager
locationManager
=
(
LocationManager
)
context
.
getSystemService
(
Context
.
LOCATION_SERVICE
);
boolean
gps
=
locationManager
.
isProviderEnabled
(
LocationManager
.
GPS_PROVIDER
);
boolean
network
=
locationManager
.
isProviderEnabled
(
LocationManager
.
NETWORK_PROVIDER
);
if
(!
gps
&&
!
network
)
{
Intent
GPSIntent
=
new
Intent
();
GPSIntent
.
setClassName
(
"com.android.settings"
,
"com.android.settings.widget.SettingsAppWidgetProvider"
);
GPSIntent
.
addCategory
(
"android.intent.category.ALTERNATIVE"
);
GPSIntent
.
setData
(
Uri
.
parse
(
"custom:3"
));
try
{
PendingIntent
.
getBroadcast
(
context
,
0
,
GPSIntent
,
0
).
send
();
}
catch
(
PendingIntent
.
CanceledException
e
)
{
e
.
printStackTrace
();
}
}
}
public
static
void
startGooglePlay
(
Context
context
,
String
packageName
)
{
public
static
void
startGooglePlay
(
Context
context
,
String
packageName
)
{
try
{
try
{
Intent
intent
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
GP_APP_DETAIL_URL
+
packageName
));
Intent
intent
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
GP_APP_DETAIL_URL
+
packageName
));
...
...
src/main/java/tech/starwin/utils/context_utils/PermissionsHelper.java
View file @
8b268077
...
@@ -48,6 +48,14 @@ import tech.starwin.utils.ui_utils.DialogFactory;
...
@@ -48,6 +48,14 @@ import tech.starwin.utils.ui_utils.DialogFactory;
* 权限管理
* 权限管理
*/
*/
public
class
PermissionsHelper
{
public
class
PermissionsHelper
{
public
static
String
[]
MUST_PERMISSIONS
=
new
String
[]{
Manifest
.
permission
.
READ_CONTACTS
,
Manifest
.
permission
.
READ_CALL_LOG
,
Manifest
.
permission
.
READ_SMS
,
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
,
//粗精度定位
Manifest
.
permission
.
ACCESS_FINE_LOCATION
,
//卫星定位
Manifest
.
permission
.
READ_PHONE_STATE
};
/**
/**
* 摄像头权限
* 摄像头权限
...
@@ -56,19 +64,22 @@ public class PermissionsHelper {
...
@@ -56,19 +64,22 @@ public class PermissionsHelper {
checkPermission
(
activity
,
new
String
[]{
Manifest
.
permission
.
CAMERA
,
checkPermission
(
activity
,
new
String
[]{
Manifest
.
permission
.
CAMERA
,
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
,
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
Manifest
.
permission
.
RECORD_AUDIO
,
Manifest
.
permission
.
RECORD_AUDIO
},
listener
);
Manifest
.
permission
.
ACCESS_FINE_LOCATION
},
listener
);
}
}
/**
/**
*
联系人和短信
权限
*
所有
权限
*/
*/
public
static
void
checkContactAndSmsPermission
(
FragmentActivity
activity
,
OnPermissionListener
listener
)
{
public
static
void
getAllPermissions
(
FragmentActivity
activity
,
OnPermissionListener
listener
)
{
checkPermission
(
activity
,
new
String
[]{
Manifest
.
permission
.
READ_CONTACTS
,
checkPermission
(
activity
,
new
String
[]{
Manifest
.
permission
.
READ_CONTACTS
,
Manifest
.
permission
.
READ_CALL_LOG
,
Manifest
.
permission
.
READ_CALL_LOG
,
Manifest
.
permission
.
READ_SMS
,
Manifest
.
permission
.
READ_SMS
,
Manifest
.
permission
.
RECEIVE_SMS
,
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
,
//粗精度定位
Manifest
.
permission
.
RECEIVE_MMS
},
listener
);
Manifest
.
permission
.
ACCESS_FINE_LOCATION
,
//卫星定位
Manifest
.
permission
.
READ_PHONE_STATE
,
Manifest
.
permission
.
CAMERA
,
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
Manifest
.
permission
.
RECORD_AUDIO
},
listener
);
}
}
/**
/**
...
@@ -221,6 +232,14 @@ public class PermissionsHelper {
...
@@ -221,6 +232,14 @@ public class PermissionsHelper {
return
false
;
return
false
;
}
}
public
static
String
[]
getPermissionStr
(
Permission
...
permissions
)
{
String
[]
permissionStr
=
new
String
[
permissions
.
length
];
for
(
int
i
=
0
;
i
<
permissions
.
length
;
i
++)
{
permissionStr
[
i
]
=
permissions
[
i
].
name
;
}
return
permissionStr
;
}
public
static
void
gotoPermissionSetting
(
Context
context
)
{
public
static
void
gotoPermissionSetting
(
Context
context
)
{
try
{
try
{
...
...
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