Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
RvApp
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lify
RvApp
Commits
05c0f69d
Commit
05c0f69d
authored
Dec 10, 2019
by
jianglx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加 启动页 隐私权限温馨提示 与 注册页 的注册协议及隐私政策弹框
parent
5b95675d
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
1144 additions
and
181 deletions
+1144
-181
build.gradle
RvClient/build.gradle
+2
-2
MainActivity.java
RvClient/src/main/java/com/xxfc/rv/MainActivity.java
+32
-1
PrivacyFirstTipsDialog.java
...ent/src/main/java/com/xxfc/rv/PrivacyFirstTipsDialog.java
+156
-0
PrivacySecondTipsDialog.java
...nt/src/main/java/com/xxfc/rv/PrivacySecondTipsDialog.java
+90
-0
PrivacyThirdTipsDialog.java
...ent/src/main/java/com/xxfc/rv/PrivacyThirdTipsDialog.java
+90
-0
WelcomeActivity.java
RvClient/src/main/java/com/xxfc/rv/WelcomeActivity.java
+6
-144
WelcomePresenter.java
...src/main/java/com/xxfc/rv/presenter/WelcomePresenter.java
+193
-0
dialog_privacy_first_tips.xml
RvClient/src/main/res/layout/dialog_privacy_first_tips.xml
+84
-0
dialog_privacy_second_tips.xml
RvClient/src/main/res/layout/dialog_privacy_second_tips.xml
+79
-0
dialog_privacy_third_tips.xml
RvClient/src/main/res/layout/dialog_privacy_third_tips.xml
+68
-0
BaseActivity.java
...rc/main/java/com/ruiwenliu/wrapper/base/BaseActivity.java
+1
-1
WrapperPresenter.java
...ava/com/ruiwenliu/wrapper/presenter/WrapperPresenter.java
+0
-3
styles.xml
RvWrapper/src/main/res/values/styles.xml
+17
-0
AppCookie.java
...utils/src/main/java/com/rv/component/utils/AppCookie.java
+2
-0
PrivacyTipsDialog.java
...ava/com/rv/home/rv/module/ui/login/PrivacyTipsDialog.java
+217
-0
RegisteredActivity.java
...va/com/rv/home/rv/module/ui/login/RegisteredActivity.java
+17
-1
HomeFragment.java
...java/com/rv/home/rv/module/ui/main/home/HomeFragment.java
+4
-8
dialog_privacy_tips.xml
module_home/src/main/res/layout/dialog_privacy_tips.xml
+86
-0
styles.xml
plugin_points/src/main/res/values/styles.xml
+0
-21
No files found.
RvClient/build.gradle
View file @
05c0f69d
...
@@ -8,8 +8,8 @@ android {
...
@@ -8,8 +8,8 @@ android {
minSdkVersion
rootProject
.
ext
.
minSdkVersion
minSdkVersion
rootProject
.
ext
.
minSdkVersion
targetSdkVersion
rootProject
.
ext
.
targetSdkVersion
targetSdkVersion
rootProject
.
ext
.
targetSdkVersion
flavorDimensions
"default"
flavorDimensions
"default"
versionCode
15
6
versionCode
15
4
versionName
"1.5.
6
"
versionName
"1.5.
4
"
multiDexEnabled
true
multiDexEnabled
true
...
...
RvClient/src/main/java/com/xxfc/rv/MainActivity.java
View file @
05c0f69d
...
@@ -30,6 +30,7 @@ import android.widget.TextView;
...
@@ -30,6 +30,7 @@ import android.widget.TextView;
import
android.widget.Toast
;
import
android.widget.Toast
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.base.utils.tools.android.NetworkUtil
;
import
com.base.utils.ui.image.round.RoundImageView
;
import
com.base.utils.ui.image.round.RoundImageView
;
import
com.frame.base.url.Constance
;
import
com.frame.base.url.Constance
;
import
com.frame.rv.config.RvFrameConfig
;
import
com.frame.rv.config.RvFrameConfig
;
...
@@ -57,6 +58,7 @@ import com.ruiwenliu.wrapper.weight.TitleView;
...
@@ -57,6 +58,7 @@ import com.ruiwenliu.wrapper.weight.TitleView;
import
com.rv.camp.CampFragment
;
import
com.rv.camp.CampFragment
;
import
com.rv.component.dialog.ConferenceEventDialog
;
import
com.rv.component.dialog.ConferenceEventDialog
;
import
com.rv.component.utils.AppCookie
;
import
com.rv.component.utils.AppCookie
;
import
com.rv.component.utils.CacheEnum
;
import
com.rv.component.utils.Cookie
;
import
com.rv.component.utils.Cookie
;
import
com.rv.component.utils.DateUtils
;
import
com.rv.component.utils.DateUtils
;
import
com.rv.component.utils.LogUtil
;
import
com.rv.component.utils.LogUtil
;
...
@@ -64,8 +66,11 @@ import com.rv.component.utils.RvCache;
...
@@ -64,8 +66,11 @@ import com.rv.component.utils.RvCache;
import
com.rv.home.rv.module.ApiConfig
;
import
com.rv.home.rv.module.ApiConfig
;
import
com.rv.home.rv.module.ui.main.home.HomeFragment
;
import
com.rv.home.rv.module.ui.main.home.HomeFragment
;
import
com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean
;
import
com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean
;
import
com.rv.im.AppConfig
;
import
com.rv.im.ImService
;
import
com.rv.im.ImService
;
import
com.rv.im.ImSetting
;
import
com.rv.im.ImSetting
;
import
com.rv.im.bean.ImConfig
;
import
com.rv.im.bean.ImConfigBean
;
import
com.rv.im.call.AudioOrVideoController
;
import
com.rv.im.call.AudioOrVideoController
;
import
com.rv.im.db.table.ChatMessage
;
import
com.rv.im.db.table.ChatMessage
;
import
com.rv.im.view.TitleTextWindow
;
import
com.rv.im.view.TitleTextWindow
;
...
@@ -169,7 +174,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
...
@@ -169,7 +174,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
@Override
@Override
public
boolean
isBindService
()
{
public
boolean
isBindService
()
{
return
hasBindService
;
return
hasBindService
&&
!
isImNoInit
()
;
}
}
@Override
@Override
...
@@ -253,6 +258,22 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
...
@@ -253,6 +258,22 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
checkToken
();
checkToken
();
getPreRentDays
();
getPreRentDays
();
initShareCode
();
initShareCode
();
checkImConfig
();
}
/***********
* 检测im的配置
*/
private
void
checkImConfig
()
{
if
(
isImNoInit
())
{
mPresenter
.
getData
(
8
,
AppConfig
.
CONFIG_URL
,
ImConfigBean
.
class
,
false
);
}
}
private
boolean
isImNoInit
()
{
AppConfig
appConfig
=
(
AppConfig
)
RvCache
.
getInstance
().
get
(
CacheEnum
.
IM_CONFIG
);
return
appConfig
==
null
;
}
}
@Override
@Override
...
@@ -327,6 +348,16 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
...
@@ -327,6 +348,16 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
CodeInfoBean
codeInfoBean
=
(
CodeInfoBean
)
result
;
CodeInfoBean
codeInfoBean
=
(
CodeInfoBean
)
result
;
showConferenceEvent
(
codeInfoBean
);
showConferenceEvent
(
codeInfoBean
);
break
;
break
;
case
8
:
ImConfigBean
imConfigBean
=
(
ImConfigBean
)
result
;
ImConfig
config
;
if
(
imConfigBean
!=
null
&&
imConfigBean
.
resultCode
==
1
&&
imConfigBean
.
getData
()
!=
null
)
{
LogUtil
.
e
(
"zq"
,
"获取网络配置成功,使用服务端返回的配置并更新本地配置"
);
config
=
imConfigBean
.
getData
();
AppConfig
appConfig
=
AppConfig
.
initConfig
(
config
);
RvCache
.
getInstance
().
save
(
appConfig
,
CacheEnum
.
IM_CONFIG
);
}
break
;
default
:
default
:
break
;
break
;
}
}
...
...
RvClient/src/main/java/com/xxfc/rv/PrivacyFirstTipsDialog.java
0 → 100644
View file @
05c0f69d
package
com
.
xxfc
.
rv
;
import
android.content.Context
;
import
android.support.annotation.NonNull
;
import
android.text.SpannableStringBuilder
;
import
android.text.TextPaint
;
import
android.text.method.LinkMovementMethod
;
import
android.text.style.ClickableSpan
;
import
android.view.Gravity
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.WindowManager
;
import
android.widget.Button
;
import
android.widget.TextView
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.frame.base.url.Constance
;
import
com.ruiwenliu.wrapper.dialog.BaseDialog
;
import
com.rv.home.rv.module.ApiConfig
;
public
class
PrivacyFirstTipsDialog
extends
BaseDialog
{
public
PrivacyFirstTipsDialog
(
@NonNull
Context
context
)
{
super
(
context
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
public
PrivacyFirstTipsDialog
(
Context
context
,
int
themeResId
)
{
super
(
context
,
themeResId
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
dialog_privacy_first_tips
;
}
public
static
class
Builder
{
private
Context
mContext
;
private
Button
btnDisagree
,
btnAgree
;
private
TextView
txtContent
;
private
PrivacyFirstTipsDialog
dialog
;
private
PrivacyListener
mListener
;
public
Builder
(
Context
context
,
PrivacyListener
listener
)
{
mContext
=
context
;
this
.
mListener
=
listener
;
}
public
interface
DownloadListener
{
void
download
();
}
public
Builder
show
()
{
final
PrivacyFirstTipsDialog
dialog
=
create
();
dialog
.
show
();
return
this
;
}
/**
* 创建定制的对话框
*/
public
PrivacyFirstTipsDialog
create
()
{
LayoutInflater
inflater
=
(
LayoutInflater
)
mContext
.
getSystemService
(
Context
.
LAYOUT_INFLATER_SERVICE
);
dialog
=
new
PrivacyFirstTipsDialog
(
mContext
,
R
.
style
.
DialogActivityTheme
);
// 获取对话框的布局
View
layout
=
inflater
.
inflate
(
R
.
layout
.
dialog_privacy_first_tips
,
null
);
// 为对话框添加布局和设置大小
dialog
.
addContentView
(
layout
,
new
WindowManager
.
LayoutParams
(
WindowManager
.
LayoutParams
.
MATCH_PARENT
,
WindowManager
.
LayoutParams
.
WRAP_CONTENT
));
txtContent
=
layout
.
findViewById
(
R
.
id
.
tv_tips_content
)
;
this
.
btnDisagree
=
layout
.
findViewById
(
R
.
id
.
btn_disagree
);
this
.
btnAgree
=
layout
.
findViewById
(
R
.
id
.
btn_agree
);
this
.
btnAgree
.
setOnClickListener
(
v
->
{
if
(
mListener
!=
null
)
mListener
.
agree
();
dialog
.
dismiss
();
});
this
.
btnDisagree
.
setOnClickListener
(
v
->
{
if
(
mListener
!=
null
)
mListener
.
disAgree
();
dialog
.
dismiss
();
});
SpannableStringBuilder
ssb
=
new
SpannableStringBuilder
();
String
str
=
txtContent
.
getText
().
toString
().
trim
();
ssb
.
append
(
str
);
final
int
start
=
str
.
indexOf
(
"《"
);
//第一个出现的位
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"隐私政策"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
19
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
mContext
.
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
start
,
start
+
6
,
0
);
final
int
end
=
str
.
lastIndexOf
(
"《"
);
//最后一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"隐私政策"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
19
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
mContext
.
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
end
,
end
+
6
,
0
);
txtContent
.
setMovementMethod
(
LinkMovementMethod
.
getInstance
());
txtContent
.
setText
(
ssb
,
TextView
.
BufferType
.
SPANNABLE
);
dialog
.
setCancelable
(
false
);
dialog
.
setContentView
(
layout
);
return
dialog
;
}
private
void
avoidHintColor
(
View
view
)
{
if
(
view
instanceof
TextView
)
((
TextView
)
view
).
setHighlightColor
(
mContext
.
getResources
().
getColor
(
android
.
R
.
color
.
transparent
));
}
}
public
interface
PrivacyListener
{
void
agree
();
void
disAgree
();
}
}
RvClient/src/main/java/com/xxfc/rv/PrivacySecondTipsDialog.java
0 → 100644
View file @
05c0f69d
package
com
.
xxfc
.
rv
;
import
android.content.Context
;
import
android.support.annotation.NonNull
;
import
android.view.Gravity
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.WindowManager
;
import
android.widget.Button
;
import
android.widget.TextView
;
import
com.ruiwenliu.wrapper.dialog.BaseDialog
;
public
class
PrivacySecondTipsDialog
extends
BaseDialog
{
public
PrivacySecondTipsDialog
(
@NonNull
Context
context
)
{
super
(
context
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
public
PrivacySecondTipsDialog
(
Context
context
,
int
themeResId
)
{
super
(
context
,
themeResId
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
dialog_privacy_second_tips
;
}
public
static
class
Builder
{
private
Context
mContext
;
private
Button
btnDisagree
,
btnWatchAgreement
;
private
TextView
txtContent
;
private
PrivacySecondTipsDialog
dialog
;
private
PrivacyListener
mListener
;
public
Builder
(
Context
context
,
PrivacyListener
listener
)
{
mContext
=
context
;
this
.
mListener
=
listener
;
}
public
interface
DownloadListener
{
void
download
();
}
public
Builder
show
()
{
final
PrivacySecondTipsDialog
dialog
=
create
();
dialog
.
show
();
return
this
;
}
/**
* 创建定制的对话框
*/
public
PrivacySecondTipsDialog
create
()
{
LayoutInflater
inflater
=
(
LayoutInflater
)
mContext
.
getSystemService
(
Context
.
LAYOUT_INFLATER_SERVICE
);
dialog
=
new
PrivacySecondTipsDialog
(
mContext
,
R
.
style
.
DialogActivityTheme
);
// 获取对话框的布局
View
layout
=
inflater
.
inflate
(
R
.
layout
.
dialog_privacy_second_tips
,
null
);
// 为对话框添加布局和设置大小
dialog
.
addContentView
(
layout
,
new
WindowManager
.
LayoutParams
(
WindowManager
.
LayoutParams
.
MATCH_PARENT
,
WindowManager
.
LayoutParams
.
WRAP_CONTENT
));
this
.
btnDisagree
=
layout
.
findViewById
(
R
.
id
.
btn_disagree
);
this
.
btnWatchAgreement
=
layout
.
findViewById
(
R
.
id
.
btn_watch_agreement
);
this
.
btnWatchAgreement
.
setOnClickListener
(
v
->
{
if
(
mListener
!=
null
)
mListener
.
watchAgreement
();
dialog
.
dismiss
();
});
this
.
btnDisagree
.
setOnClickListener
(
v
->
{
if
(
mListener
!=
null
)
mListener
.
disAgree
();
dialog
.
dismiss
();
});
dialog
.
setCancelable
(
false
);
dialog
.
setContentView
(
layout
);
return
dialog
;
}
}
public
interface
PrivacyListener
{
void
disAgree
();
void
watchAgreement
();
}
}
RvClient/src/main/java/com/xxfc/rv/PrivacyThirdTipsDialog.java
0 → 100644
View file @
05c0f69d
package
com
.
xxfc
.
rv
;
import
android.content.Context
;
import
android.support.annotation.NonNull
;
import
android.view.Gravity
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.WindowManager
;
import
android.widget.Button
;
import
android.widget.TextView
;
import
com.ruiwenliu.wrapper.dialog.BaseDialog
;
public
class
PrivacyThirdTipsDialog
extends
BaseDialog
{
public
PrivacyThirdTipsDialog
(
@NonNull
Context
context
)
{
super
(
context
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
public
PrivacyThirdTipsDialog
(
Context
context
,
int
themeResId
)
{
super
(
context
,
themeResId
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
dialog_privacy_third_tips
;
}
public
static
class
Builder
{
private
Context
mContext
;
private
Button
btnExit
,
btnWatchAgreement
;
private
TextView
txtContent
;
private
PrivacyThirdTipsDialog
dialog
;
private
PrivacyListener
mListener
;
public
Builder
(
Context
context
,
PrivacyListener
listener
)
{
mContext
=
context
;
this
.
mListener
=
listener
;
}
public
interface
DownloadListener
{
void
download
();
}
public
Builder
show
()
{
final
PrivacyThirdTipsDialog
dialog
=
create
();
dialog
.
show
();
return
this
;
}
/**
* 创建定制的对话框
*/
public
PrivacyThirdTipsDialog
create
()
{
LayoutInflater
inflater
=
(
LayoutInflater
)
mContext
.
getSystemService
(
Context
.
LAYOUT_INFLATER_SERVICE
);
dialog
=
new
PrivacyThirdTipsDialog
(
mContext
,
R
.
style
.
DialogActivityTheme
);
// 获取对话框的布局
View
layout
=
inflater
.
inflate
(
R
.
layout
.
dialog_privacy_third_tips
,
null
);
// 为对话框添加布局和设置大小
dialog
.
addContentView
(
layout
,
new
WindowManager
.
LayoutParams
(
WindowManager
.
LayoutParams
.
MATCH_PARENT
,
WindowManager
.
LayoutParams
.
WRAP_CONTENT
));
this
.
btnExit
=
layout
.
findViewById
(
R
.
id
.
btn_exit
);
this
.
btnWatchAgreement
=
layout
.
findViewById
(
R
.
id
.
btn_watch_agreement
);
this
.
btnWatchAgreement
.
setOnClickListener
(
v
->
{
if
(
mListener
!=
null
)
mListener
.
watchAgreement
();
dialog
.
dismiss
();
});
this
.
btnExit
.
setOnClickListener
(
v
->
{
if
(
mListener
!=
null
)
mListener
.
exit
();
dialog
.
dismiss
();
});
dialog
.
setCancelable
(
false
);
dialog
.
setContentView
(
layout
);
return
dialog
;
}
}
public
interface
PrivacyListener
{
void
watchAgreement
();
void
exit
();
}
}
RvClient/src/main/java/com/xxfc/rv/WelcomeActivity.java
View file @
05c0f69d
package
com
.
xxfc
.
rv
;
package
com
.
xxfc
.
rv
;
import
android.Manifest
;
import
android.annotation.SuppressLint
;
import
android.app.AlertDialog
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.provider.Settings
;
import
android.support.annotation.Nullable
;
import
android.support.annotation.Nullable
;
import
android.text.TextUtils
;
import
android.view.View
;
import
android.view.View
;
import
com.base.utils.tools.android.NetworkUtil
;
import
com.ruiwenliu.wrapper.SPConstance
;
import
com.ruiwenliu.wrapper.base.BaseActivity
;
import
com.ruiwenliu.wrapper.base.BaseActivity
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.util.permission.RxPermission
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.component.utils.AppCookie
;
import
com.rv.component.utils.CacheEnum
;
import
com.rv.component.utils.CacheEnum
;
import
com.rv.component.utils.Cookie
;
import
com.rv.component.utils.LogUtil
;
import
com.rv.component.utils.LogUtil
;
import
com.ruiwenliu.wrapper.base.presenter.CommonPresenter
;
import
com.rv.component.utils.RvCache
;
import
com.rv.component.utils.RvCache
;
import
com.rv.im.AppConfig
;
import
com.rv.im.AppConfig
;
import
com.rv.im.bean.ImConfig
;
import
com.rv.im.bean.ImConfig
;
import
com.rv.im.bean.ImConfigBean
;
import
com.rv.im.bean.ImConfigBean
;
import
com.sh.sdk.shareinstall.ShareInstall
;
import
com.xxfc.rv.presenter.WelcomePresenter
;
import
com.yuyife.okgo.OkGoUtil
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
java.util.concurrent.TimeUnit
;
import
io.reactivex.Flowable
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
public
class
WelcomeActivity
extends
BaseActivity
<
CommonPresenter
>
{
private
static
final
int
CODE_REQUEST_POISITION
=
1000
;
private
Disposable
mDisposable
=
null
;
private
boolean
isImInitOk
=
false
;
private
boolean
isInterval
=
false
;
public
class
WelcomeActivity
extends
BaseActivity
<
WelcomePresenter
>
{
@Override
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
...
@@ -56,13 +25,9 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
...
@@ -56,13 +25,9 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
ImConfig
config
;
ImConfig
config
;
if
(
bean
!=
null
&&
bean
.
resultCode
==
1
&&
((
ImConfigBean
)
result
).
getData
()
!=
null
)
{
if
(
bean
!=
null
&&
bean
.
resultCode
==
1
&&
((
ImConfigBean
)
result
).
getData
()
!=
null
)
{
LogUtil
.
e
(
"zq"
,
"获取网络配置成功,使用服务端返回的配置并更新本地配置"
);
LogUtil
.
e
(
"zq"
,
"获取网络配置成功,使用服务端返回的配置并更新本地配置"
);
isImInitOk
=
true
;
config
=
bean
.
getData
();
config
=
bean
.
getData
();
AppConfig
appConfig
=
AppConfig
.
initConfig
(
config
);
AppConfig
appConfig
=
AppConfig
.
initConfig
(
config
);
RvCache
.
getInstance
().
save
(
appConfig
,
CacheEnum
.
IM_CONFIG
);
RvCache
.
getInstance
().
save
(
appConfig
,
CacheEnum
.
IM_CONFIG
);
if
(
isInterval
&&
!
isFinishing
())
{
go
();
}
}
}
}
}
}
}
...
@@ -75,114 +40,13 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
...
@@ -75,114 +40,13 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
@Override
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
showTitle
(
false
);
//隐藏菜单栏
showTitle
(
false
);
//隐藏菜单栏
permissionProcess
();
}
private
void
init
()
{
AppConfig
appConfig
=
(
AppConfig
)
RvCache
.
getInstance
().
get
(
CacheEnum
.
IM_CONFIG
);
if
(
appConfig
==
null
)
{
if
(!
NetworkUtil
.
isNetworkAvailable
(
getApplicationContext
()))
{
showToast
(
"网络异常,初始化失败,请退出重试"
,
1
);
}
}
else
{
isImInitOk
=
true
;
}
interval
();
LogUtil
.
d
(
"start"
);
}
/**
* 定位权限处理
*/
@SuppressLint
(
"CheckResult"
)
private
void
permissionProcess
()
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
)
{
new
RxPermission
(
mActivity
).
request
(
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
,
Manifest
.
permission
.
ACCESS_FINE_LOCATION
).
subscribe
(
aBoolean
->
{
if
(
aBoolean
==
true
)
{
init
();
}
else
{
new
AlertDialog
.
Builder
(
this
).
setTitle
(
"需要定位权限"
)
.
setMessage
(
"位置权限已关闭,开启以便滴房车正常使用"
)
.
setNegativeButton
(
"取消"
,
(
dialogInterface
,
i
)
->
{
finish
();
dialogInterface
.
dismiss
();
})
.
setPositiveButton
(
"设置"
,
(
dialogInterface
,
i
)
->
{
Intent
in
=
new
Intent
(
Settings
.
ACTION_APPLICATION_DETAILS_SETTINGS
)
.
setData
(
Uri
.
fromParts
(
"package"
,
getPackageName
(),
null
));
startActivityForResult
(
in
,
CODE_REQUEST_POISITION
);
dialogInterface
.
dismiss
();
}).
setCancelable
(
false
).
show
();
}
});
}
else
{
init
();
}
}
}
@Override
@Override
protected
void
loadData
(
Bundle
savedInstanceState
,
Intent
intent
)
{
protected
void
loadData
(
Bundle
savedInstanceState
,
Intent
intent
)
{
mPresenter
.
saveOnclick
(
"8"
,
""
);
mPresenter
.
saveOnclick
(
"8"
,
""
);
getImConfig
();
mPresenter
.
privacyConsent
();
}
mPresenter
.
getImConfig
();
private
void
getImConfig
()
{
mPresenter
.
getData
(
0
,
AppConfig
.
CONFIG_URL
,
ImConfigBean
.
class
,
false
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
stopCarousel
();
}
/**
* 计时器
*/
private
void
interval
()
{
mDisposable
=
Flowable
.
interval
(
1
,
TimeUnit
.
SECONDS
)
.
doOnNext
(
aLong
->
{
})
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
aLong
->
{
isInterval
=
true
;
try
{
String
token
=
Cookie
.
getStringValue
(
getApplicationContext
(),
SPConstance
.
USER_JSON_TOKEN
,
""
);
String
tokenTime
=
Cookie
.
getStringValue
(
getApplicationContext
(),
SPConstance
.
USER_JSON_TOKE_TIME
,
""
);
if
(!
TextUtils
.
isEmpty
(
token
))
{
OkGoUtil
.
setToken
(
token
,
tokenTime
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
if
(
isImInitOk
)
{
go
();
}
});
}
/**
* 停止计时
*/
public
void
stopCarousel
()
{
if
(
mDisposable
!=
null
&&
!
mDisposable
.
isDisposed
())
{
mDisposable
.
dispose
();
}
}
private
void
go
()
{
if
(
AppCookie
.
getBooleanValue
(
"first_open"
,
true
))
{
AppCookie
.
save
(
"first_open"
,
false
);
startActivity
(
GuideActivity
.
getIntent
(
mActivity
));
}
else
{
startActivity
(
MainActivity
.
getIntent
(
mActivity
));
}
mDisposable
.
dispose
();
finish
();
}
}
@Override
@Override
...
@@ -190,16 +54,14 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
...
@@ -190,16 +54,14 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
if
(
Build
.
VERSION
.
SDK_INT
>=
21
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
21
)
{
getWindow
().
getDecorView
().
setSystemUiVisibility
(
View
.
SYSTEM_UI_FLAG_FULLSCREEN
);
getWindow
().
getDecorView
().
setSystemUiVisibility
(
View
.
SYSTEM_UI_FLAG_FULLSCREEN
);
// getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN);
}
}
}
}
@Override
@Override
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
@Nullable
Intent
data
)
{
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
@Nullable
Intent
data
)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
if
(
requestCode
==
CODE_REQUEST_POISITION
)
{
if
(
requestCode
==
mPresenter
.
CODE_REQUEST_POISITION
)
{
permissionProcess
();
mPresenter
.
permissionProcess
();
}
}
}
}
}
}
RvClient/src/main/java/com/xxfc/rv/presenter/WelcomePresenter.java
0 → 100644
View file @
05c0f69d
package
com
.
xxfc
.
rv
.
presenter
;
import
android.Manifest
;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.provider.Settings
;
import
android.text.TextUtils
;
import
com.ruiwenliu.wrapper.SPConstance
;
import
com.ruiwenliu.wrapper.base.presenter.CommonPresenter
;
import
com.ruiwenliu.wrapper.util.permission.RxPermission
;
import
com.rv.component.utils.AppCookie
;
import
com.rv.component.utils.Cookie
;
import
com.rv.im.AppConfig
;
import
com.rv.im.bean.ImConfigBean
;
import
com.xxfc.rv.GuideActivity
;
import
com.xxfc.rv.MainActivity
;
import
com.xxfc.rv.PrivacySecondTipsDialog
;
import
com.xxfc.rv.PrivacyThirdTipsDialog
;
import
com.xxfc.rv.PrivacyFirstTipsDialog
;
import
com.yuyife.okgo.OkGoUtil
;
import
java.util.concurrent.TimeUnit
;
import
io.reactivex.Flowable
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
public
class
WelcomePresenter
extends
CommonPresenter
{
public
static
final
int
CODE_REQUEST_POISITION
=
1000
;
private
Disposable
mDisposable
=
null
;
private
Activity
mActivity
;
private
PrivacyFirstTipsDialog
privacyfirstTipsDialog
;
private
PrivacySecondTipsDialog
privacySecondTipsDialog
;
private
PrivacyThirdTipsDialog
privacyThirdTipsDialog
;
/*****
* 同意隐私
*/
public
void
privacyConsent
()
{
mActivity
=
(
Activity
)
getPresenterContext
();
if
(!
AppCookie
.
getBooleanValue
(
AppCookie
.
KEY_AGREE_PRIVACY
,
false
))
{
if
(
privacyfirstTipsDialog
==
null
)
{
privacyfirstTipsDialog
=
new
PrivacyFirstTipsDialog
.
Builder
(
mActivity
,
privacyListener
).
create
();
}
privacyfirstTipsDialog
.
show
();
}
else
{
permissionProcess
();
}
}
/*********
*
* 获取im的配置
*
*/
public
void
getImConfig
()
{
getData
(
0
,
AppConfig
.
CONFIG_URL
,
ImConfigBean
.
class
,
false
);
}
/**
* 定位权限处理
*/
@SuppressLint
(
"CheckResult"
)
public
void
permissionProcess
()
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
)
{
new
RxPermission
((
Activity
)
getPresenterContext
()).
request
(
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
,
Manifest
.
permission
.
ACCESS_FINE_LOCATION
).
subscribe
(
aBoolean
->
{
if
(
aBoolean
==
true
)
{
interval
();
}
else
{
new
AlertDialog
.
Builder
(
mActivity
).
setTitle
(
"需要定位权限"
)
.
setMessage
(
"位置权限已关闭,开启以便滴房车正常使用"
)
.
setNegativeButton
(
"取消"
,
(
dialogInterface
,
i
)
->
{
mActivity
.
finish
();
dialogInterface
.
dismiss
();
})
.
setPositiveButton
(
"设置"
,
(
dialogInterface
,
i
)
->
{
Intent
in
=
new
Intent
(
Settings
.
ACTION_APPLICATION_DETAILS_SETTINGS
)
.
setData
(
Uri
.
fromParts
(
"package"
,
getPresenterContext
().
getPackageName
(),
null
));
mActivity
.
startActivityForResult
(
in
,
CODE_REQUEST_POISITION
);
dialogInterface
.
dismiss
();
}).
setCancelable
(
false
).
show
();
}
});
}
else
{
interval
();
}
}
/**
* 计时器
*/
private
void
interval
()
{
mDisposable
=
Flowable
.
interval
(
1
,
TimeUnit
.
SECONDS
)
.
doOnNext
(
aLong
->
{
})
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
aLong
->
{
try
{
String
token
=
Cookie
.
getStringValue
(
null
,
SPConstance
.
USER_JSON_TOKEN
,
""
);
String
tokenTime
=
Cookie
.
getStringValue
(
null
,
SPConstance
.
USER_JSON_TOKE_TIME
,
""
);
if
(!
TextUtils
.
isEmpty
(
token
))
{
OkGoUtil
.
setToken
(
token
,
tokenTime
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
go
();
});
}
private
void
go
()
{
if
(
AppCookie
.
getBooleanValue
(
"first_open"
,
true
))
{
AppCookie
.
save
(
"first_open"
,
false
);
mActivity
.
startActivity
(
GuideActivity
.
getIntent
(
mActivity
));
}
else
{
mActivity
.
startActivity
(
MainActivity
.
getIntent
(
mActivity
));
}
mActivity
.
finish
();
}
@Override
public
void
detachView
()
{
super
.
detachView
();
stopCarousel
();
}
/**
* 停止计时
*/
public
void
stopCarousel
()
{
if
(
mDisposable
!=
null
&&
!
mDisposable
.
isDisposed
())
{
mDisposable
.
dispose
();
}
}
private
PrivacyFirstTipsDialog
.
PrivacyListener
privacyListener
=
new
PrivacyFirstTipsDialog
.
PrivacyListener
()
{
@Override
public
void
agree
()
{
AppCookie
.
save
(
AppCookie
.
KEY_AGREE_PRIVACY
,
true
);
permissionProcess
();
}
@Override
public
void
disAgree
()
{
if
(
privacySecondTipsDialog
==
null
)
{
privacySecondTipsDialog
=
new
PrivacySecondTipsDialog
.
Builder
(
mActivity
,
privacyListener1
).
create
();
}
privacySecondTipsDialog
.
show
();
}
};
private
PrivacySecondTipsDialog
.
PrivacyListener
privacyListener1
=
new
PrivacySecondTipsDialog
.
PrivacyListener
()
{
@Override
public
void
disAgree
()
{
if
(
privacyThirdTipsDialog
==
null
)
{
privacyThirdTipsDialog
=
new
PrivacyThirdTipsDialog
.
Builder
(
mActivity
,
privacyListener2
).
create
();
}
privacyThirdTipsDialog
.
show
();
}
@Override
public
void
watchAgreement
()
{
privacyfirstTipsDialog
.
show
();
}
};
private
PrivacyThirdTipsDialog
.
PrivacyListener
privacyListener2
=
new
PrivacyThirdTipsDialog
.
PrivacyListener
()
{
@Override
public
void
watchAgreement
()
{
privacyfirstTipsDialog
.
show
();
}
@Override
public
void
exit
()
{
mActivity
.
finish
();
}
};
}
RvClient/src/main/res/layout/dialog_privacy_first_tips.xml
0 → 100644
View file @
05c0f69d
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:background=
"@color/white"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
>
<TextView
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginRight=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_20"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:text=
"温馨提示"
android:textColor=
"#323232"
android:textSize=
"@dimen/sp_16"
/>
<TextView
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginRight=
"@dimen/size_20"
android:id=
"@+id/tv_tips_content"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_marginTop=
"@dimen/size_20"
android:layout_weight=
"1"
android:gravity=
"left"
android:letterSpacing=
"0.1"
android:text=
" 感谢您信任并使用滴房车!我们依据最新的法律法规、监管政策要求及业务员实际情况,更新了《隐私政策》(点击了解更新后的详细内容),特此向您推送本提示。\n\n
请您务必仔细阅读并透彻理解相关条款内容,在确定充分理解并同意后使用滴房车相关产品或内容。点击同意即代表您已阅读并同意《隐私政策》,如果您不同意,将可能影响使用滴房车的产品和服务。\n\n
我们将按照法律法规要求,采取相应安全保护措施,尽力保护您的个人信息安全可控。"
android:singleLine=
"false"
android:textColor=
"#666666"
android:textSize=
"14sp"
/>
<View
android:layout_marginTop=
"@dimen/dp_40"
android:layout_width=
"match_parent"
android:layout_height=
"1px"
android:background=
"@color/colorYellow"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:orientation=
"horizontal"
>
<Button
android:textSize=
"@dimen/size_16"
android:background=
"@color/white"
android:text=
"不同意"
android:gravity=
"center"
android:id=
"@+id/btn_disagree"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
/>
<Button
android:textSize=
"@dimen/size_16"
android:textColor=
"@color/white"
android:text=
"同意"
android:background=
"#FF9900"
android:gravity=
"center"
android:id=
"@+id/btn_agree"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
RvClient/src/main/res/layout/dialog_privacy_second_tips.xml
0 → 100644
View file @
05c0f69d
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:background=
"@color/white"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_20"
android:layout_marginRight=
"@dimen/size_20"
android:gravity=
"center"
android:text=
"您需同意本隐私政策才能使用滴房车"
android:textColor=
"#323232"
android:textSize=
"@dimen/sp_16"
/>
<TextView
android:id=
"@+id/tv_tips_content"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_20"
android:layout_marginRight=
"@dimen/size_20"
android:layout_weight=
"1"
android:gravity=
"left"
android:singleLine=
"false"
android:text=
"若您不同意改隐私协议,非常遗憾我们将无法为您服务"
android:textColor=
"#666666"
android:textSize=
"14sp"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"1px"
android:layout_marginTop=
"@dimen/dp_40"
android:background=
"@color/colorYellow"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:orientation=
"horizontal"
>
<Button
android:id=
"@+id/btn_disagree"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:background=
"@color/white"
android:gravity=
"center"
android:text=
"仍不同意"
android:textSize=
"@dimen/size_16"
/>
<Button
android:id=
"@+id/btn_watch_agreement"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:background=
"#FF9900"
android:gravity=
"center"
android:text=
"查看协议"
android:textColor=
"@color/white"
android:textSize=
"@dimen/size_16"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
RvClient/src/main/res/layout/dialog_privacy_third_tips.xml
0 → 100644
View file @
05c0f69d
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:background=
"@color/white"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv_tips_content"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_20"
android:layout_marginRight=
"@dimen/size_20"
android:layout_weight=
"1"
android:gravity=
"center"
android:singleLine=
"false"
android:text=
"亲,要不再看看"
android:textColor=
"#666666"
android:textSize=
"@dimen/size_16"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"1px"
android:layout_marginTop=
"@dimen/size_30"
android:background=
"@color/colorYellow"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:orientation=
"horizontal"
>
<Button
android:id=
"@+id/btn_exit"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:background=
"@color/white"
android:gravity=
"center"
android:text=
"退出应用"
android:textSize=
"@dimen/size_16"
/>
<Button
android:id=
"@+id/btn_watch_agreement"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:background=
"#FF9900"
android:gravity=
"center"
android:text=
"查看协议"
android:textColor=
"@color/white"
android:textSize=
"@dimen/size_16"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
RvWrapper/src/main/java/com/ruiwenliu/wrapper/base/BaseActivity.java
View file @
05c0f69d
...
@@ -47,8 +47,8 @@ public abstract class BaseActivity<P extends MvpPresenter> extends BaseWrapperAc
...
@@ -47,8 +47,8 @@ public abstract class BaseActivity<P extends MvpPresenter> extends BaseWrapperAc
mLoadingDialog
=
createLoadingDialog
();
mLoadingDialog
=
createLoadingDialog
();
if
(
NetworkUtil
.
isNetworkAvailable
(
mActivity
))
{
if
(
NetworkUtil
.
isNetworkAvailable
(
mActivity
))
{
isLoadData
=
true
;
isLoadData
=
true
;
loadData
(
savedInstanceState
,
getIntent
());
}
}
loadData
(
savedInstanceState
,
getIntent
());
NetWorkReceiver
.
getInstance
().
register
(
this
);
NetWorkReceiver
.
getInstance
().
register
(
this
);
}
}
...
...
RvWrapper/src/main/java/com/ruiwenliu/wrapper/presenter/WrapperPresenter.java
View file @
05c0f69d
...
@@ -53,15 +53,12 @@ public abstract class WrapperPresenter<V extends BaseView> implements Presenter<
...
@@ -53,15 +53,12 @@ public abstract class WrapperPresenter<V extends BaseView> implements Presenter<
@Override
@Override
public
void
detachView
()
{
public
void
detachView
()
{
if
(
viewReference
!=
null
)
{
if
(
viewReference
!=
null
)
{
viewReference
.
clear
();
viewReference
.
clear
();
viewReference
=
null
;
viewReference
=
null
;
}
}
}
}
public
Context
getPresenterContext
()
{
public
Context
getPresenterContext
()
{
return
getView
()
instanceof
Context
?
(
Context
)
getView
()
:
((
Fragment
)
getView
()).
getContext
();
return
getView
()
instanceof
Context
?
(
Context
)
getView
()
:
((
Fragment
)
getView
()).
getContext
();
}
}
...
...
RvWrapper/src/main/res/values/styles.xml
View file @
05c0f69d
...
@@ -65,5 +65,22 @@
...
@@ -65,5 +65,22 @@
<!--<item name="android:windowIsTranslucent">false</item>-->
<!--<item name="android:windowIsTranslucent">false</item>-->
</style>
</style>
<style
name=
"DialogActivityTheme"
parent=
"Theme.AppCompat.Dialog"
>
<item
name=
"android:windowFrame"
>
@null
</item>
<!-- 边框 -->
<item
name=
"android:windowIsFloating"
>
true
</item>
<!-- 是否浮现在activity之上 -->
<item
name=
"android:windowIsTranslucent"
>
true
</item>
<!-- 半透明 -->
<item
name=
"android:windowNoTitle"
>
true
</item>
<item
name=
"android:windowBackground"
>
@android:color/transparent
</item>
<item
name=
"android:background"
>
@android:color/transparent
</item>
<item
name=
"android:backgroundDimEnabled"
>
true
</item>
<!-- 模糊 -->
<item
name=
"android:windowCloseOnTouchOutside"
>
false
</item>
<!-- 重点,去掉标题 -->
<item
name=
"windowNoTitle"
>
true
</item>
</style>
</resources>
</resources>
component_utils/src/main/java/com/rv/component/utils/AppCookie.java
View file @
05c0f69d
...
@@ -16,6 +16,8 @@ public class AppCookie {
...
@@ -16,6 +16,8 @@ public class AppCookie {
public
static
final
String
OFFLINE_TIME
=
"offline_time"
;
public
static
final
String
OFFLINE_TIME
=
"offline_time"
;
public
static
final
String
KEY_AGREE_PRIVACY
=
"key_agree_privacy"
;
// 同意隐私权限
private
static
SharedPreferences
preferences
;
private
static
SharedPreferences
preferences
;
private
static
WeakReference
<
Context
>
weakReference
=
null
;
private
static
WeakReference
<
Context
>
weakReference
=
null
;
...
...
module_home/src/main/java/com/rv/home/rv/module/ui/login/PrivacyTipsDialog.java
0 → 100644
View file @
05c0f69d
package
com
.
rv
.
home
.
rv
.
module
.
ui
.
login
;
import
android.content.Context
;
import
android.graphics.Paint
;
import
android.graphics.Typeface
;
import
android.support.annotation.NonNull
;
import
android.text.SpannableStringBuilder
;
import
android.text.TextPaint
;
import
android.text.method.LinkMovementMethod
;
import
android.text.style.ClickableSpan
;
import
android.text.style.StyleSpan
;
import
android.text.style.UnderlineSpan
;
import
android.view.Gravity
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.WindowManager
;
import
android.widget.Button
;
import
android.widget.TextView
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.frame.base.url.Constance
;
import
com.ruiwenliu.wrapper.dialog.BaseDialog
;
import
com.rv.home.R
;
import
com.rv.home.rv.module.ApiConfig
;
public
class
PrivacyTipsDialog
extends
BaseDialog
{
public
PrivacyTipsDialog
(
@NonNull
Context
context
)
{
super
(
context
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
public
PrivacyTipsDialog
(
Context
context
,
int
themeResId
)
{
super
(
context
,
themeResId
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
dialog_privacy_tips
;
}
public
static
class
Builder
{
private
Context
mContext
;
private
Button
btnDisagree
,
btnAgree
;
private
TextView
txtContent
;
private
PrivacyTipsDialog
dialog
;
private
PrivacyListener
mListener
;
public
Builder
(
Context
context
,
PrivacyListener
listener
)
{
mContext
=
context
;
this
.
mListener
=
listener
;
}
public
interface
DownloadListener
{
void
download
();
}
public
Builder
show
()
{
final
PrivacyTipsDialog
dialog
=
create
();
dialog
.
show
();
return
this
;
}
/**
* 创建定制的对话框
*/
public
PrivacyTipsDialog
create
()
{
LayoutInflater
inflater
=
(
LayoutInflater
)
mContext
.
getSystemService
(
Context
.
LAYOUT_INFLATER_SERVICE
);
dialog
=
new
PrivacyTipsDialog
(
mContext
,
R
.
style
.
DialogActivityTheme
);
// 获取对话框的布局
View
layout
=
inflater
.
inflate
(
R
.
layout
.
dialog_privacy_tips
,
null
);
// 为对话框添加布局和设置大小
dialog
.
addContentView
(
layout
,
new
WindowManager
.
LayoutParams
(
WindowManager
.
LayoutParams
.
MATCH_PARENT
,
WindowManager
.
LayoutParams
.
WRAP_CONTENT
));
txtContent
=
layout
.
findViewById
(
R
.
id
.
tv_tips_content
)
;
this
.
btnDisagree
=
layout
.
findViewById
(
R
.
id
.
btn_disagree
);
this
.
btnAgree
=
layout
.
findViewById
(
R
.
id
.
btn_agree
);
this
.
btnAgree
.
setOnClickListener
(
v
->
{
if
(
mListener
!=
null
)
mListener
.
agree
();
dialog
.
dismiss
();
});
this
.
btnDisagree
.
setOnClickListener
(
v
->
{
if
(
mListener
!=
null
)
mListener
.
disAgree
();
dialog
.
dismiss
();
});
setTextColorAndAction
();
dialog
.
setCancelable
(
false
);
dialog
.
setContentView
(
layout
);
return
dialog
;
}
private
void
avoidHintColor
(
View
view
)
{
if
(
view
instanceof
TextView
)
((
TextView
)
view
).
setHighlightColor
(
mContext
.
getResources
().
getColor
(
android
.
R
.
color
.
transparent
));
}
private
void
setTextColorAndAction
(){
SpannableStringBuilder
ssb
=
new
SpannableStringBuilder
();
String
str
=
txtContent
.
getText
().
toString
().
trim
();
ssb
.
append
(
str
);
ssb
.
setSpan
(
new
UnderlineSpan
(),
str
.
indexOf
(
"如果您不同意以上"
),
str
.
indexOf
(
"您停止注册后将"
),
0
);
ssb
.
setSpan
(
new
StyleSpan
(
Typeface
.
BOLD
),
str
.
indexOf
(
"如果您不同意以上"
),
str
.
indexOf
(
"您停止注册后将"
),
0
);
ssb
.
setSpan
(
new
UnderlineSpan
(),
str
.
indexOf
(
"请您务必仔细阅读"
),
str
.
indexOf
(
"(尤其是以粗"
),
0
);
ssb
.
setSpan
(
new
StyleSpan
(
Typeface
.
BOLD
),
str
.
indexOf
(
"请您务必仔细阅读"
),
str
.
indexOf
(
"(尤其是以粗"
),
0
);
final
int
startUserAgreement
=
str
.
indexOf
(
"《用户协议》"
);
//第一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"用户协议"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
15
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
mContext
.
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
startUserAgreement
,
startUserAgreement
+
6
,
0
);
final
int
endUserAgreement
=
str
.
lastIndexOf
(
"《用户协议》"
);
//最后一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"用户协议"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
15
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
mContext
.
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
endUserAgreement
,
endUserAgreement
+
6
,
0
);
final
int
startPrivacyAgreement
=
str
.
indexOf
(
"《隐私政策》"
);
//第一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"隐私政策"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
19
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
mContext
.
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
startPrivacyAgreement
,
startPrivacyAgreement
+
6
,
0
);
final
int
endPrivacyAgreement
=
str
.
lastIndexOf
(
"《隐私政策》"
);
//最后一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"隐私政策"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
19
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
mContext
.
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
endPrivacyAgreement
,
endPrivacyAgreement
+
6
,
0
);
txtContent
.
setMovementMethod
(
LinkMovementMethod
.
getInstance
());
txtContent
.
setText
(
ssb
,
TextView
.
BufferType
.
SPANNABLE
);
}
}
public
interface
PrivacyListener
{
void
agree
();
void
disAgree
();
}
}
module_home/src/main/java/com/rv/home/rv/module/ui/login/RegisteredActivity.java
View file @
05c0f69d
...
@@ -69,7 +69,6 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
...
@@ -69,7 +69,6 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
@BindView
(
R2
.
id
.
tv_agreement
)
@BindView
(
R2
.
id
.
tv_agreement
)
TextView
tvAgreement
;
TextView
tvAgreement
;
private
Disposable
mDisposable
;
private
Disposable
mDisposable
;
private
boolean
pwdShow
;
//密码
private
boolean
pwdShow
;
//密码
private
boolean
confirmShow
;
//确认密码
private
boolean
confirmShow
;
//确认密码
...
@@ -114,6 +113,23 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
...
@@ -114,6 +113,23 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
editListener
(
etPwd
);
editListener
(
etPwd
);
editListener
(
etInviteCode
);
editListener
(
etInviteCode
);
initData
();
initData
();
privacyAgree
();
}
private
void
privacyAgree
()
{
new
PrivacyTipsDialog
.
Builder
(
this
,
new
PrivacyTipsDialog
.
PrivacyListener
()
{
@Override
public
void
agree
()
{
cbAnnotations
.
setChecked
(
true
);
}
@Override
public
void
disAgree
()
{
finish
();
}
}).
show
();
}
}
private
void
initData
()
{
private
void
initData
()
{
...
...
module_home/src/main/java/com/rv/home/rv/module/ui/main/home/HomeFragment.java
View file @
05c0f69d
...
@@ -58,12 +58,14 @@ import com.ruiwenliu.wrapper.util.permission.RxPermission;
...
@@ -58,12 +58,14 @@ import com.ruiwenliu.wrapper.util.permission.RxPermission;
import
com.ruiwenliu.wrapper.weight.refresh.IFooterWrapper
;
import
com.ruiwenliu.wrapper.weight.refresh.IFooterWrapper
;
import
com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout
;
import
com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout
;
import
com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView
;
import
com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView
;
import
com.rv.component.utils.CacheEnum
;
import
com.rv.component.utils.Cookie
;
import
com.rv.component.utils.Cookie
;
import
com.rv.component.utils.DateUtils
;
import
com.rv.component.utils.DateUtils
;
import
com.rv.component.utils.DisplayUtil
;
import
com.rv.component.utils.DisplayUtil
;
import
com.rv.component.utils.LogUtil
;
import
com.rv.component.utils.LogUtil
;
import
com.rv.component.utils.MyUtils
;
import
com.rv.component.utils.MyUtils
;
import
com.rv.component.utils.ObservableScrollView
;
import
com.rv.component.utils.ObservableScrollView
;
import
com.rv.component.utils.RvCache
;
import
com.rv.home.R
;
import
com.rv.home.R
;
import
com.rv.home.R2
;
import
com.rv.home.R2
;
import
com.rv.home.rv.module.ApiConfig
;
import
com.rv.home.rv.module.ApiConfig
;
...
@@ -251,8 +253,6 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
...
@@ -251,8 +253,6 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
private
int
countPage
;
private
int
countPage
;
private
int
mPage
;
private
int
mPage
;
private
boolean
hasNewMessage
;
public
static
HomeFragment
getInstance
(
int
type
)
{
public
static
HomeFragment
getInstance
(
int
type
)
{
Bundle
bundl
=
new
Bundle
();
Bundle
bundl
=
new
Bundle
();
bundl
.
putInt
(
"type"
,
type
);
bundl
.
putInt
(
"type"
,
type
);
...
@@ -963,16 +963,12 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
...
@@ -963,16 +963,12 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
scrollview
.
fullScroll
(
View
.
FOCUS_UP
);
scrollview
.
fullScroll
(
View
.
FOCUS_UP
);
}
else
if
(
id
==
R
.
id
.
iv_home_travel_server_image
)
{
}
else
if
(
id
==
R
.
id
.
iv_home_travel_server_image
)
{
if
(
isLogin
())
{
if
(
isLogin
())
{
hasNewMessage
=
false
;
// if (llItemTop.getVisibility() != View.VISIBLE) {
// travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
// } else {
// travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
// }
if
(
_mActivity
instanceof
ImInitListenter
&&
!((
ImInitListenter
)
_mActivity
).
isBindService
())
{
if
(
_mActivity
instanceof
ImInitListenter
&&
!((
ImInitListenter
)
_mActivity
).
isBindService
())
{
showToast
(
"Im初始化中..."
);
showToast
(
"Im初始化中..."
);
return
;
return
;
}
}
ComponentName
name
=
new
ComponentName
(
getActivity
(),
"com.rv.im.CustomerListActivity"
);
ComponentName
name
=
new
ComponentName
(
getActivity
(),
"com.rv.im.CustomerListActivity"
);
Intent
intent
=
new
Intent
();
Intent
intent
=
new
Intent
();
intent
.
putExtra
(
"login_user_id"
,
Cookie
.
getStringValue
(
getContext
(),
SPConstance
.
USER_JSON_IMUSERID
));
intent
.
putExtra
(
"login_user_id"
,
Cookie
.
getStringValue
(
getContext
(),
SPConstance
.
USER_JSON_IMUSERID
));
...
...
module_home/src/main/res/layout/dialog_privacy_tips.xml
0 → 100644
View file @
05c0f69d
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/size_25"
android:layout_marginBottom=
"@dimen/size_25"
android:layout_marginLeft=
"@dimen/size_25"
android:layout_marginRight=
"@dimen/size_25"
android:background=
"@color/white"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
>
<TextView
android:layout_marginLeft=
"@dimen/size_15"
android:layout_marginRight=
"@dimen/size_15"
android:layout_marginTop=
"@dimen/size_20"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:text=
"注册协议及隐私政策"
android:textColor=
"#323232"
android:textSize=
"@dimen/sp_16"
/>
<TextView
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
android:id=
"@+id/tv_tips_content"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_marginTop=
"@dimen/size_20"
android:layout_weight=
"1"
android:gravity=
"left"
android:text=
" 在您注册成为滴房车用户的过程中,您需要完成我们的注册流程并通过点击同意的形式在线签署以下协议,请您务必仔细阅读、充分理解协议中的条款内容后再点击同意(尤其是以粗体并下划线标识的条款,因为这些条款可能会明确您应履行的义务或对您的权利有所限制):\n\n
《用户协议》\n
《隐私政策》\n\n
【请您注意】如果您不同意以上协议或其中任何条款约定、请您停止注册。您停止注册后将仅可以浏览我们的商品信息但无法享受我们产品或服务。如您按照注册流程提示填写信息、阅读并点击同意上述协议且完成全部注册流程后,即表示您已充分阅读、理解并接受协议的全部内容;并表明您也同意滴房车可以依据以上的隐私政策内容来处理您的个人信息。如您对以上协议内容有任何疑问,您可随时与滴房车客服联系。
\n\n\n
点击同意即表示您已阅读并同意《用户协议》《隐私政策》"
android:singleLine=
"false"
android:textColor=
"#666666"
android:textSize=
"14sp"
/>
<View
android:layout_marginTop=
"@dimen/size_20"
android:layout_width=
"match_parent"
android:layout_height=
"1px"
android:background=
"@color/colorYellow"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:orientation=
"horizontal"
>
<Button
android:textSize=
"@dimen/size_16"
android:background=
"@color/white"
android:text=
"不同意"
android:gravity=
"center"
android:id=
"@+id/btn_disagree"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
/>
<Button
android:textSize=
"@dimen/size_16"
android:textColor=
"@color/white"
android:text=
"同意"
android:background=
"#FF9900"
android:gravity=
"center"
android:id=
"@+id/btn_agree"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
plugin_points/src/main/res/values/styles.xml
deleted
100644 → 0
View file @
5b95675d
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style
name=
"DialogActivityTheme"
parent=
"Theme.AppCompat.Dialog"
>
<item
name=
"android:windowFrame"
>
@null
</item>
<!-- 边框 -->
<item
name=
"android:windowIsFloating"
>
true
</item>
<!-- 是否浮现在activity之上 -->
<item
name=
"android:windowIsTranslucent"
>
true
</item>
<!-- 半透明 -->
<item
name=
"android:windowNoTitle"
>
true
</item>
<item
name=
"android:windowBackground"
>
@android:color/transparent
</item>
<item
name=
"android:background"
>
@android:color/transparent
</item>
<item
name=
"android:backgroundDimEnabled"
>
true
</item>
<!-- 模糊 -->
<item
name=
"android:windowCloseOnTouchOutside"
>
false
</item>
<!-- 重点,去掉标题 -->
<item
name=
"windowNoTitle"
>
true
</item>
</style>
</resources>
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