Skip to content

Commit d633df1

Browse files
committed
【ID869532311】App数据隐私合规检测风险问题修复-添加帮助反馈h5页面申请的权限弹窗,登出时再次注册时,可重新选择出生日期,出生日期弹窗添加年龄限制提示,登录和注册读写验证码权限时机放置在点击获取验证码之后,修改用户协议隐私政策弹窗中的邮箱和地址。
http: //tapd.oa.com/NEW_IOT/prong/stories/view/1020393192869532311 Change-Id: If547f87ec828978bfafe8cbadb7291874c7015e4
1 parent c1212af commit d633df1

File tree

16 files changed

+250
-133
lines changed

16 files changed

+250
-133
lines changed

app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/InputBirthdayDialog.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
public class InputBirthdayDialog extends IosCenterStyleDialog implements View.OnClickListener {
2323
private TextView okBtn;
2424
private TextView cancelBtn;
25+
private TextView detailTv;
2526
private WheelPicker yearPicker;
2627
private WheelPicker monthPicker;
2728
private WheelPicker dayPicker;
@@ -34,9 +35,15 @@ public class InputBirthdayDialog extends IosCenterStyleDialog implements View.On
3435
private int MAX_YEAR_NUM;
3536
private final int MIN_YEAR = 1900;
3637
private final int MAX_MONTH_NUM = 12;
38+
private String detailString;
3739

38-
public InputBirthdayDialog(Context context) {
40+
public InputBirthdayDialog(Context context, String countryCode) {
3941
super(context, R.layout.popup_birthday_layout);
42+
if (countryCode.equals("1")) {
43+
detailString = context.getString(R.string.birthday_detail_usa);
44+
} else {
45+
detailString = context.getString(R.string.birthday_detail_china);
46+
}
4047

4148
Date currentDate = new Date();
4249
final int year = currentDate.getYear() + MIN_YEAR;
@@ -54,6 +61,7 @@ public InputBirthdayDialog(Context context) {
5461
public void initView() {
5562
okBtn = view.findViewById(R.id.tv_ok);
5663
cancelBtn = view.findViewById(R.id.tv_cancel);
64+
detailTv = view.findViewById(R.id.tv_detail);
5765
yearPicker = view.findViewById(R.id.wheel_timer_year_picker);
5866
monthPicker = view.findViewById(R.id.wheel_timer_month_picker);
5967
dayPicker = view.findViewById(R.id.wheel_timer_day_picker);
@@ -68,6 +76,8 @@ public void initView() {
6876
dialogLayout.setOnClickListener(this);
6977
monthPicker.setOnItemSelectedListener(yearMonthSelectedListener);
7078
yearPicker.setOnItemSelectedListener(yearMonthSelectedListener);
79+
80+
detailTv.setText(detailString);
7181
initDateView();
7282
}
7383

app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ChooseCountryActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ class ChooseCountryActivity : PActivity(), ChooseCountryView, View.OnClickListen
158158
private fun showBirthDayDlg() {
159159
val countryCode = presenter.getCountryCode()
160160
if (shouldShowBirthdayDlg(countryCode)) {
161-
var dlg = InputBirthdayDialog(this@ChooseCountryActivity)
161+
var dlg = InputBirthdayDialog(this@ChooseCountryActivity, countryCode)
162162
dlg.show()
163163
dlg.setOnDismissListener(object: InputBirthdayDialog.OnDismisListener {
164164
override fun onOkClicked(year: Int, month: Int, day: Int) {

app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI
331331
var cameraJson: JSONObject? = JSONObject.parse(cameraJsonString) as JSONObject?
332332
val lasttime = cameraJson?.getLong(CommonField.PERMISSION_CAMERA)
333333
if (lasttime != null && lasttime > 0 && System.currentTimeMillis() / 1000 - lasttime < 48*60*60) {
334-
T.show(getString(R.string.permission_of_camera_scan_refuse))
334+
T.show(getString(R.string.permission_of_camera_refuse))
335335
return
336336
}
337337
requestPermission(permissions)

app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GetCodeActivity.kt

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.content.ClipboardManager
55
import android.content.Context
66
import android.content.Intent
77
import android.os.Handler
8+
import com.alibaba.fastjson.JSONObject
89
import com.tencent.iot.explorer.link.R
910
import com.tencent.iot.explorer.link.core.auth.util.Weak
1011
import com.tencent.iot.explorer.link.core.log.L
@@ -15,6 +16,7 @@ import com.tencent.iot.explorer.link.mvp.presenter.GetCodePresenter
1516
import com.tencent.iot.explorer.link.mvp.view.GetCodeView
1617
import com.tencent.iot.explorer.link.T
1718
import com.tencent.iot.explorer.link.core.utils.KeyBoardUtils
19+
import com.tencent.iot.explorer.link.customview.dialog.PermissionDialog
1820
import kotlinx.android.synthetic.main.activity_get_code.*
1921
import kotlinx.android.synthetic.main.menu_back_layout.*
2022

@@ -33,6 +35,7 @@ class GetCodeActivity : PActivity(), GetCodeView, ClipboardManager.OnPrimaryClip
3335
const val COUNTRY_CODE = "country_code"
3436
}
3537

38+
private var permissionDialog: PermissionDialog? = null
3639
private val permissions = arrayOf(
3740
Manifest.permission.RECEIVE_SMS,
3841
Manifest.permission.READ_SMS,
@@ -50,7 +53,24 @@ class GetCodeActivity : PActivity(), GetCodeView, ClipboardManager.OnPrimaryClip
5053
}
5154

5255
override fun initView() {
53-
if (checkPermissions(permissions)) {
56+
if (!checkPermissions(permissions)) {
57+
// 查看请求sms权限的时间是否大于48小时
58+
var smsJsonString = Utils.getStringValueFromXml(T.getContext(), CommonField.PERMISSION_SMS, CommonField.PERMISSION_SMS)
59+
var smsJson: JSONObject? = JSONObject.parse(smsJsonString) as JSONObject?
60+
val lasttime = smsJson?.getLong(CommonField.PERMISSION_SMS)
61+
if (lasttime != null && lasttime > 0 && System.currentTimeMillis() / 1000 - lasttime < 48*60*60) {
62+
T.show(getString(R.string.permission_of_sms_refuse))
63+
return
64+
}
65+
permissionDialog = PermissionDialog(this@GetCodeActivity, R.mipmap.permission_sms, getString(R.string.permission_sms_lips), getString(R.string.permission_sms))
66+
permissionDialog!!.show()
67+
requestPermission(permissions)
68+
69+
// 记录请求sms权限的时间
70+
var json = JSONObject()
71+
json.put(CommonField.PERMISSION_SMS, System.currentTimeMillis() / 1000)
72+
Utils.setXmlStringValue(T.getContext(), CommonField.PERMISSION_SMS, CommonField.PERMISSION_SMS, json.toJSONString())
73+
} else {
5474
permissionAllGranted()
5575
}
5676
presenter = GetCodePresenter(this)
@@ -79,6 +99,20 @@ class GetCodeActivity : PActivity(), GetCodeView, ClipboardManager.OnPrimaryClip
7999
clipboardManager.addPrimaryClipChangedListener(this)
80100
}
81101

102+
override fun onRequestPermissionsResult(
103+
requestCode: Int,
104+
permissions: Array<String>,
105+
grantResults: IntArray
106+
) {
107+
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
108+
if (requestCode == 102) {
109+
if (permissions.contains(Manifest.permission.READ_SMS)) {
110+
permissionDialog?.dismiss()
111+
permissionDialog = null
112+
}
113+
}
114+
}
115+
82116
override fun onPrimaryClipChanged() {
83117
if (clipboardManager.hasPrimaryClip()) {
84118
clipboardManager.primaryClip?.let {

app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt

Lines changed: 118 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.tencent.iot.explorer.link.core.log.L
2626
import com.tencent.iot.explorer.link.core.utils.FileUtils
2727
import com.tencent.iot.explorer.link.core.utils.PhotoUtils
2828
import com.tencent.iot.explorer.link.core.utils.Utils
29+
import com.tencent.iot.explorer.link.customview.dialog.PermissionDialog
2930
import com.tencent.iot.explorer.link.kitlink.consts.CommonField
3031
import com.tencent.iot.explorer.link.kitlink.util.HttpRequest
3132
import com.tencent.iot.explorer.link.kitlink.webview.BridgeImpl
@@ -47,8 +48,15 @@ class HelpWebViewActivity: BaseActivity(), MyCallback, View.OnClickListener {
4748
private var uploadMessageAboveL: ValueCallback<Array<Uri>>? = null
4849
private val FILE_CHOOSER_RESULT_CODE = 10000
4950
private val FILE_CAMERA_RESULT_CODE = 9999
51+
private val FILE_CHOOSER_CAMERA_RESULT_CODE = 9998
5052

5153
private var configQuestionList = false
54+
private var permissionDialog: PermissionDialog? = null
55+
56+
private var permissions = arrayOf(
57+
Manifest.permission.READ_EXTERNAL_STORAGE,
58+
Manifest.permission.WRITE_EXTERNAL_STORAGE
59+
)
5260

5361
override fun getContentView(): Int {
5462
return R.layout.activity_help_feedback
@@ -204,23 +212,27 @@ class HelpWebViewActivity: BaseActivity(), MyCallback, View.OnClickListener {
204212
}
205213

206214
// 检查相机权限是否开启
207-
private fun checkCameraPermission(): Boolean {
208-
209-
// android M(6.0) 以上检查存储权限以及相机权限
210-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
211-
(ContextCompat.checkSelfPermission(this@HelpWebViewActivity,
212-
Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED ||
213-
ContextCompat.checkSelfPermission(this@HelpWebViewActivity,
214-
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) {
215-
216-
requestPermissions(arrayOf(Manifest.permission.CAMERA,
217-
Manifest.permission.WRITE_SETTINGS,
218-
Manifest.permission.READ_EXTERNAL_STORAGE,
219-
Manifest.permission.WRITE_EXTERNAL_STORAGE),
220-
FILE_CHOOSER_RESULT_CODE)
221-
return false
215+
private fun checkCameraPermission(isCamera: Boolean): Boolean {
216+
217+
if (isCamera) {//相机
218+
// android M(6.0) 以上检查存储权限以及相机权限
219+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
220+
(ContextCompat.checkSelfPermission(this@HelpWebViewActivity,
221+
Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED ||
222+
ContextCompat.checkSelfPermission(this@HelpWebViewActivity,
223+
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) {
224+
225+
return false
226+
}
227+
return true
228+
} else {//相册
229+
// android M(6.0) 以上检查存储权限
230+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this@HelpWebViewActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
231+
232+
return false
233+
}
234+
return true
222235
}
223-
return true
224236
}
225237

226238
override fun onClick(v: View?) {
@@ -235,6 +247,48 @@ class HelpWebViewActivity: BaseActivity(), MyCallback, View.OnClickListener {
235247
}
236248
}
237249

250+
override fun onRequestPermissionsResult(
251+
requestCode: Int,
252+
permissions: Array<String>,
253+
grantResults: IntArray
254+
) {
255+
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
256+
permissionDialog?.dismiss()
257+
permissionDialog = null
258+
for (i in permissions.indices) {
259+
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
260+
when (requestCode) {
261+
FILE_CHOOSER_RESULT_CODE -> {
262+
T.show(resources.getString(R.string.permission_of_album_refuse))
263+
}
264+
FILE_CAMERA_RESULT_CODE -> {
265+
T.show(resources.getString(R.string.permission_of_camera_refuse))
266+
}
267+
FILE_CHOOSER_CAMERA_RESULT_CODE -> {
268+
T.show(resources.getString(R.string.permission_of_camera_refuse))
269+
}
270+
}
271+
return
272+
}
273+
}
274+
}
275+
276+
//查看请求 permissionName 权限的时间是否大于48小时
277+
private fun requestPermissionIsIn48Hours(permissionName: String) :Boolean {
278+
// 查看请求camera权限的时间是否大于48小时
279+
var cameraJsonString = Utils.getStringValueFromXml(T.getContext(), permissionName, permissionName)
280+
var cameraJson: JSONObject? = JSONObject.parse(cameraJsonString) as JSONObject?
281+
val lasttime = cameraJson?.getLong(permissionName)
282+
return (lasttime != null && lasttime > 0 && System.currentTimeMillis() / 1000 - lasttime < 48*60*60)
283+
}
284+
//记录请求 permissionName 权限的时间
285+
private fun savePermission(permissionName: String) {
286+
//
287+
var json = JSONObject()
288+
json.put(permissionName, System.currentTimeMillis() / 1000)
289+
Utils.setXmlStringValue(T.getContext(), permissionName, permissionName, json.toJSONString())
290+
}
291+
238292
val webChromeClient = object: WebChromeClient() {
239293

240294
override fun onShowFileChooser (webView: WebView, filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams: FileChooserParams?): Boolean {
@@ -244,17 +298,63 @@ class HelpWebViewActivity: BaseActivity(), MyCallback, View.OnClickListener {
244298

245299
if (fileChooserParams.isCaptureEnabled) {
246300
isCapture = true;
247-
if (checkCameraPermission()) {
301+
if (checkCameraPermission(true)) {
248302
PhotoUtils.startCamera(this@HelpWebViewActivity)
249303
} else {
304+
305+
// 检查相机权限
306+
if (ContextCompat.checkSelfPermission(this@HelpWebViewActivity, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
307+
// 查看请求camera权限的时间是否大于48小时
308+
if (requestPermissionIsIn48Hours(CommonField.PERMISSION_CAMERA)) {
309+
T.show(resources.getString(R.string.permission_of_camera_refuse))
310+
return false
311+
}
312+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
313+
requestPermissions(arrayOf(Manifest.permission.CAMERA), FILE_CAMERA_RESULT_CODE)
314+
}
315+
permissionDialog = PermissionDialog(this@HelpWebViewActivity, R.mipmap.permission_camera ,getString(R.string.permission_camera_lips), getString(R.string.permission_camera_help_center))
316+
permissionDialog!!.show()
317+
318+
// 记录请求camera权限的时间
319+
savePermission(CommonField.PERMISSION_CAMERA)
320+
} else if (ContextCompat.checkSelfPermission(this@HelpWebViewActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
321+
// 查看请求album权限的时间是否大于48小时
322+
if (requestPermissionIsIn48Hours(CommonField.PERMISSION_ALBUM)) {
323+
T.show(resources.getString(R.string.permission_of_album_refuse))
324+
return false
325+
}
326+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
327+
requestPermissions(permissions, FILE_CHOOSER_CAMERA_RESULT_CODE)
328+
}
329+
permissionDialog = PermissionDialog(this@HelpWebViewActivity, R.mipmap.permission_album ,getString(R.string.permission_storage_camera_lips), getString(R.string.permission_storage_help_center_camera))
330+
permissionDialog!!.show()
331+
332+
// 记录请求album权限的时间
333+
savePermission(CommonField.PERMISSION_ALBUM)
334+
}
335+
336+
250337
return false
251338
}
252339

253340
} else {
254341
isCapture = false;
255-
if (checkCameraPermission()) {
342+
if (checkCameraPermission(false)) {
256343
PhotoUtils.startAlbum(this@HelpWebViewActivity)
257344
} else {
345+
// 查看请求album权限的时间是否大于48小时
346+
if (requestPermissionIsIn48Hours(CommonField.PERMISSION_ALBUM)) {
347+
T.show(resources.getString(R.string.permission_of_album_refuse))
348+
return false
349+
}
350+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
351+
requestPermissions(permissions, FILE_CHOOSER_RESULT_CODE)
352+
}
353+
permissionDialog = PermissionDialog(this@HelpWebViewActivity, R.mipmap.permission_album ,getString(R.string.permission_album_lips), getString(R.string.permission_storage_help_center))
354+
permissionDialog!!.show()
355+
356+
// 记录请求album权限的时间
357+
savePermission(CommonField.PERMISSION_ALBUM)
258358
return false
259359
}
260360
}

app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -104,26 +104,6 @@ class LoginActivity : PActivity(), LoginView, View.OnClickListener, WeChatLogin
104104
iv_login_agreement.setImageResource(R.mipmap.icon_unselected)
105105
iv_login_agreement_status.visibility = View.GONE
106106

107-
if (!checkPermissions(permissions)) {
108-
// 查看请求sms权限的时间是否大于48小时
109-
var smsJsonString = Utils.getStringValueFromXml(T.getContext(), CommonField.PERMISSION_SMS, CommonField.PERMISSION_SMS)
110-
var smsJson: JSONObject? = JSONObject.parse(smsJsonString) as JSONObject?
111-
val lasttime = smsJson?.getLong(CommonField.PERMISSION_SMS)
112-
if (lasttime != null && lasttime > 0 && System.currentTimeMillis() / 1000 - lasttime < 48*60*60) {
113-
T.show(getString(R.string.permission_of_sms_refuse))
114-
return
115-
}
116-
permissionDialog = PermissionDialog(this@LoginActivity, R.mipmap.permission_sms, getString(R.string.permission_sms_lips), getString(R.string.permission_sms))
117-
permissionDialog!!.show()
118-
requestPermission(permissions)
119-
120-
// 记录请求sms权限的时间
121-
var json = JSONObject()
122-
json.put(CommonField.PERMISSION_SMS, System.currentTimeMillis() / 1000)
123-
Utils.setXmlStringValue(T.getContext(), CommonField.PERMISSION_SMS, CommonField.PERMISSION_SMS, json.toJSONString())
124-
} else {
125-
permissionAllGranted()
126-
}
127107
}
128108

129109
override fun onRequestPermissionsResult(
@@ -509,6 +489,26 @@ class LoginActivity : PActivity(), LoginView, View.OnClickListener, WeChatLogin
509489
val account = verifyCodeLoginView.et_login_phone_or_email_byverifycode.text.trim().toString()
510490
accountForAutoFill = account
511491
if (!account.contains("@")) {
492+
if (!checkPermissions(permissions)) {
493+
// 查看请求sms权限的时间是否大于48小时
494+
var smsJsonString = Utils.getStringValueFromXml(T.getContext(), CommonField.PERMISSION_SMS, CommonField.PERMISSION_SMS)
495+
var smsJson: JSONObject? = JSONObject.parse(smsJsonString) as JSONObject?
496+
val lasttime = smsJson?.getLong(CommonField.PERMISSION_SMS)
497+
if (lasttime != null && lasttime > 0 && System.currentTimeMillis() / 1000 - lasttime < 48*60*60) {
498+
T.show(getString(R.string.permission_of_sms_refuse))
499+
return
500+
}
501+
permissionDialog = PermissionDialog(this@LoginActivity, R.mipmap.permission_sms, getString(R.string.permission_sms_lips), getString(R.string.permission_sms))
502+
permissionDialog!!.show()
503+
requestPermission(permissions)
504+
505+
// 记录请求sms权限的时间
506+
var json = JSONObject()
507+
json.put(CommonField.PERMISSION_SMS, System.currentTimeMillis() / 1000)
508+
Utils.setXmlStringValue(T.getContext(), CommonField.PERMISSION_SMS, CommonField.PERMISSION_SMS, json.toJSONString())
509+
} else {
510+
permissionAllGranted()
511+
}
512512
accountType = true
513513
presenter.setPhone(account)
514514
presenter.requestPhoneCode()

app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ class MainActivity : PActivity(), MyCallback {
241241
var cameraJson: JSONObject? = JSONObject.parse(cameraJsonString) as JSONObject?
242242
val lasttime = cameraJson?.getLong(CommonField.PERMISSION_CAMERA)
243243
if (lasttime != null && lasttime > 0 && System.currentTimeMillis() / 1000 - lasttime < 48*60*60) {
244-
T.show(getString(R.string.permission_of_camera_scan_refuse))
244+
T.show(getString(R.string.permission_of_camera_refuse))
245245
return
246246
}
247247
permissionDialog = PermissionDialog(App.activity, R.mipmap.permission_camera ,getString(R.string.permission_camera_lips), getString(R.string.permission_camera))

0 commit comments

Comments
 (0)