From 26f6627be0a0988a6c8e173e008268df1c311c12 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Tue, 18 Apr 2023 13:49:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9ocr=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 30 +++++-- app/src/main/AndroidManifest.xml | 5 ++ .../outdoor/activity/MainActivity.java | 4 +- .../navinfo/outdoor/base/BaseActivity.java | 89 +++++++++++++++++++ .../outdoor/fragment/TreasureFragment.java | 72 +++++++-------- .../navinfo/outdoor/http/HttpInterface.java | 4 +- build.gradle | 1 + gradle.properties | 1 + 8 files changed, 162 insertions(+), 44 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9882cc2..8038040 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,6 +2,26 @@ plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' + id 'org.sonarqube' +} + + +sonarqube { + properties { + //Sonar服务器地址 + property "sonar.host.url", "http://10.130.14.162:9000/" + //Token模式 +// property "sonar.login","TRD2022" + //账号密码模式 + property "sonar.login","TRD2022" + property "sonar.password","TRD2022" + property "sonar.sourceEncoding", "UTF-8" + property "sonar.projectKey", "Android_DuoApp" + property "sonar.projectName", project.name + //需要扫描的上传检测代码的模块,可以选择也可以配置哪一些需要或者不需要上传的模块(这里指APP模块下面的java包里面的全部) + property "sonar.sources", "src/main/java" + property "sonar.projectVersion", project.version + } } //apply plugin: 'com.android.application' //apply plugin: 'kotlin-android' @@ -17,8 +37,8 @@ android { applicationId "com.navinfo.outdoor" minSdkVersion 24 targetSdkVersion 30 - versionCode 50 - versionName "8.230406-测试版" + versionCode 52 + versionName "8.230418-正式环境-测试版" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { @@ -46,8 +66,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } ndkVersion '21.3.6528147' packagingOptions { @@ -155,7 +175,7 @@ dependencies { // implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.4.9' // 权限请求框架:https://github.com/getActivity/XXPermissions - implementation 'com.github.getActivity:XXPermissions:11.6' + implementation 'com.github.getActivity:XXPermissions:18.0' //room 数据库 def room_version = "2.2.0-alpha01" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e61cb63..917b1cf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -219,6 +219,11 @@ android:name="com.umeng.message.UmengMessageIntentReceiverService" android:exported="false" tools:replace="android:exported" /> + + + \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java index a0eaf29..b925e8e 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java @@ -127,13 +127,13 @@ public class MainActivity extends BaseActivity { // 申请多个权限 //.permission(Permission.Group.CALENDAR) // 申请读写外部存储卡 - .permission(Permission.MANAGE_EXTERNAL_STORAGE /*, Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE*/) + .permission(/*Permission.MANAGE_EXTERNAL_STORAGE,*/ Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE) // 申请相机权限 .permission(Permission.CAMERA) .permission(Permission.REQUEST_INSTALL_PACKAGES) // 位置权限 .permission(Permission.ACCESS_FINE_LOCATION) - .permission(Permission.ACCESS_MEDIA_LOCATION) +// .permission(Permission.ACCESS_MEDIA_LOCATION) //.permission(Permission.ACCESS_BACKGROUND_LOCATION) .permission(Permission.ACCESS_COARSE_LOCATION) //读写权限 diff --git a/app/src/main/java/com/navinfo/outdoor/base/BaseActivity.java b/app/src/main/java/com/navinfo/outdoor/base/BaseActivity.java index 343f025..4746b08 100644 --- a/app/src/main/java/com/navinfo/outdoor/base/BaseActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/base/BaseActivity.java @@ -1,12 +1,17 @@ package com.navinfo.outdoor.base; +import android.Manifest; import android.app.Activity; import android.app.Application; +import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; import android.graphics.drawable.ColorDrawable; +import android.os.Build; import android.os.Bundle; +import android.os.Environment; import android.provider.Settings; import android.util.DisplayMetrics; import android.view.KeyEvent; @@ -18,10 +23,14 @@ import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; +import androidx.core.content.PermissionChecker; +import com.baidu.ai.edge.core.base.Consts; import com.github.lazylibrary.util.StringUtils; import com.jcodecraeer.xrecyclerview.XRecyclerView; import com.navinfo.outdoor.R; @@ -59,6 +68,7 @@ public abstract class BaseActivity extends AppCompatActivity { initView(); initData(); initListener(); + requestPermission(); if (!EventBus.getDefault().isRegistered(this)) { EventBus.getDefault().register(this); } @@ -177,4 +187,83 @@ public abstract class BaseActivity extends AppCompatActivity { startActivityForResult(intent, 0); } } + + + private static final int REQUEST_PERMISSION = 1; + + protected boolean allPermissionsGranted; + + + private void requestPermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + String[] permissions = new String[]{ + Manifest.permission.WRITE_EXTERNAL_STORAGE, + }; + allPermissionsGranted = true; + for (String perm : permissions) { + if ((PermissionChecker.checkSelfPermission(this, perm) != PermissionChecker.PERMISSION_GRANTED)) { + allPermissionsGranted = false; + break; + } + } + if (!allPermissionsGranted) { + ActivityCompat.requestPermissions(BaseActivity.this, permissions, REQUEST_PERMISSION); + } else { + requestAllFilesAccess(); + } + } else { + allPermissionsGranted = true; + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, + @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (requestCode == REQUEST_PERMISSION) { + allPermissionsGranted = true; + for (int grantRes : grantResults) { + if (grantRes != PackageManager.PERMISSION_GRANTED) { + allPermissionsGranted = false; + break; + } + } + if (allPermissionsGranted) { + requestAllFilesAccess(); + } + } + } + + /** + * Android 11 跳转到设置获取SD卡根目录写入权限 + */ + private void requestAllFilesAccess() { + if (!Consts.AUTH_REQUIRE_SDCARD) { + return; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) { + allPermissionsGranted = false; + + AlertDialog.Builder alertBuilder = new AlertDialog.Builder(BaseActivity.this, + R.style.Theme_AppCompat_Light_Dialog_Alert); + alertBuilder.setMessage("需授权访问SD卡文件"); + alertBuilder.setCancelable(false); + alertBuilder.setPositiveButton("去设置", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } + }); + alertBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + alertBuilder.show(); + } + } + } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java index ccc7526..d2568c5 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java @@ -1620,41 +1620,43 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen // 5 用户给予权限进行相应操作 // 6 用户没有给予权限 作出相应提示 // 7 某些5.0权限的手机执行相应操作 - XXPermissions.with(this) - // 位置权限 - .permission(Permission.ACCESS_COARSE_LOCATION) - .permission(Permission.ACCESS_FINE_LOCATION) - .permission(Permission.ACCESS_MEDIA_LOCATION) - //.permission(Permission.ACCESS_BACKGROUND_LOCATION) - .request(new OnPermissionCallback() { - @Override - public void onGranted(List permissions, boolean all) { - if (all) { - //建立定位 - initLocation(); - } else { - dismissLoadingDialog(); - ToastUtils.Message(getActivity(), "申请权限失败"); - } - } - - @Override - public void onDenied(List permissions, boolean never) { - dismissLoadingDialog(); - if (never) { - DialogSettings.style = DialogSettings.STYLE.STYLE_IOS; - DialogSettings.cancelable = false; - MessageDialog.show((AppCompatActivity) requireActivity(), "提示", permissions.toString() + " 被永久拒绝授权,请手动授予定位权限,", "确定").setOkButton(new OnDialogButtonClickListener() { - @Override - public boolean onClick(BaseDialog baseDialog, View v) { - XXPermissions.startPermissionActivity(requireActivity(), permissions); - getActivity().finish(); - return false; - } - }); - } - } - }); + //建立定位 + initLocation(); +// XXPermissions.with(this) +// // 位置权限 +// .permission(Permission.ACCESS_COARSE_LOCATION) +// .permission(Permission.ACCESS_FINE_LOCATION) +//// .permission(Permission.ACCESS_MEDIA_LOCATION) +// //.permission(Permission.ACCESS_BACKGROUND_LOCATION) +// .request(new OnPermissionCallback() { +// @Override +// public void onGranted(List permissions, boolean all) { +// if (all) { +// //建立定位 +// initLocation(); +// } else { +// dismissLoadingDialog(); +// ToastUtils.Message(getActivity(), "申请权限失败"); +// } +// } +// +// @Override +// public void onDenied(List permissions, boolean never) { +// dismissLoadingDialog(); +// if (never) { +// DialogSettings.style = DialogSettings.STYLE.STYLE_IOS; +// DialogSettings.cancelable = false; +// MessageDialog.show((AppCompatActivity) requireActivity(), "提示", permissions.toString() + " 被永久拒绝授权,请手动授予定位权限,", "确定").setOkButton(new OnDialogButtonClickListener() { +// @Override +// public boolean onClick(BaseDialog baseDialog, View v) { +// XXPermissions.startPermissionActivity(requireActivity(), permissions); +// getActivity().finish(); +// return false; +// } +// }); +// } +// } +// }); } /*设置定位图标样式*/ diff --git a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java index b98eed1..e9a998b 100644 --- a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java +++ b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java @@ -3,8 +3,8 @@ package com.navinfo.outdoor.http; public class HttpInterface { // public static final String IP = "http://172.23.138.133:9999/m4";//测试接口-IP public static final String IP0 = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网 - public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网 - public static final String IP2 = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 + public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网 + public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 public static final String USER_PATH = "/user/";//我的 public static final String MSG_LIST_PATH = "/msgList/";//发现 public static final String USER_LOGIN_PATH = "/userlogin/";//登录 diff --git a/build.gradle b/build.gradle index a9ed135..c7f64ce 100644 --- a/build.gradle +++ b/build.gradle @@ -29,6 +29,7 @@ buildscript { classpath 'com.android.tools.build:gradle:7.0.0' //对kotlin支持 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.7' } // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle.properties b/gradle.properties index e11d5da..4619284 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,3 +22,4 @@ systemProp.https.proxyPort=1080 # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true android.injected.testOnly=false +org.gradle.java.home = C:\\Program Files\\OpenJDK\\jdk-11.0.15.10-hotspot