Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7f11dc008a | ||
|
|
f67f062bfe | ||
|
|
992ac89baa | ||
|
|
2491213ca6 | ||
|
|
069c37e4ba | ||
|
|
434f134f53 | ||
|
|
4f1794a466 | ||
|
|
bff765fef9 | ||
|
|
1b9c266c3a | ||
|
|
c9a7ae7d38 | ||
|
|
8855c7ad5c | ||
|
|
0b85733575 |
@@ -2,3 +2,18 @@
|
||||
备份3.9.5 大字版
|
||||
|
||||
uniapp 第一版
|
||||
|
||||
测试dev 分支
|
||||
|
||||
测试dev 分支22
|
||||
|
||||
git checkout dev
|
||||
git add .
|
||||
git commit -m 'desc'
|
||||
git push
|
||||
|
||||
|
||||
git checkout master
|
||||
git merge --no-ff dev
|
||||
git push
|
||||
git checkout dev
|
||||
@@ -27,9 +27,10 @@ android {
|
||||
defaultConfig {
|
||||
applicationId "cn.shangyu.gdxzExpert"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 34
|
||||
versionCode 133
|
||||
versionName "4.1.6"
|
||||
// targetSdkVersion > 32 需要处理照片权限的问题
|
||||
targetSdkVersion 32
|
||||
versionCode 420
|
||||
versionName "4.2.0"
|
||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||
multiDexEnabled true
|
||||
ndk {
|
||||
@@ -258,10 +259,9 @@ dependencies {
|
||||
implementation 'com.facebook.fresco:fresco:2.5.0'//必须集成,图片加载需要
|
||||
implementation 'com.facebook.fresco:animated-gif:2.5.0'//必须集成,图片加载需要
|
||||
implementation 'androidx.webkit:webkit:1.5.0' //4.45版本之后 必须集成,用来支持暗黑模式
|
||||
implementation 'com.github.bumptech.glide:glide:4.1.1'//必须集成,图片加载需要
|
||||
// implementation 'com.github.bumptech.glide:glide:4.9.0'
|
||||
implementation 'com.github.bumptech.glide:glide:4.9.0'//必须集成,图片加载需要
|
||||
// 重要:避免部分设备可能卡死的问题
|
||||
// annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
|
||||
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
|
||||
|
||||
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9'
|
||||
}
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
package test.shangyu.cn.myapplication;
|
||||
|
||||
import android.content.Context;
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ExampleInstrumentedTest {
|
||||
@Test
|
||||
public void useAppContext() throws Exception {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getTargetContext();
|
||||
|
||||
assertEquals("test.shangyu.cn.myapplication", appContext.getPackageName());
|
||||
}
|
||||
}
|
||||
//package test.shangyu.cn.myapplication;
|
||||
//
|
||||
//import android.content.Context;
|
||||
//import androidx.test.platform.app.InstrumentationRegistry;
|
||||
//import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
//
|
||||
//import org.junit.Test;
|
||||
//import org.junit.runner.RunWith;
|
||||
//
|
||||
//import static org.junit.Assert.*;
|
||||
//
|
||||
///**
|
||||
// * Instrumented test, which will execute on an Android device.
|
||||
// *
|
||||
// * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
// */
|
||||
//@RunWith(AndroidJUnit4.class)
|
||||
//public class ExampleInstrumentedTest {
|
||||
// @Test
|
||||
// public void useAppContext() throws Exception {
|
||||
// // Context of the app under test.
|
||||
// Context appContext = InstrumentationRegistry.getTargetContext();
|
||||
//
|
||||
// assertEquals("test.shangyu.cn.myapplication", appContext.getPackageName());
|
||||
// }
|
||||
//}
|
||||
|
||||
@@ -2,10 +2,16 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="cn.shangyu.gdxzExpert"
|
||||
android:versionCode="133"
|
||||
android:versionName="4.1.6">
|
||||
android:versionCode="420"
|
||||
android:versionName="4.2.0">
|
||||
|
||||
<uses-sdk tools:overrideLibrary="com.huawei.android.hms.base,com.huawei.android.hms.push" />
|
||||
<uses-feature
|
||||
android:name="android.hardware.camera"
|
||||
android:required="false" />
|
||||
<uses-feature
|
||||
android:name="android.hardware.telephony"
|
||||
android:required="false" />
|
||||
|
||||
<queries>
|
||||
<package android:name="com.tencent.mm" />
|
||||
@@ -30,14 +36,21 @@
|
||||
android:smallScreens="true"
|
||||
android:xlargeScreens="true" />
|
||||
|
||||
<!-- Android 13版本适配,细化存储权限 -->
|
||||
<!-- <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />-->
|
||||
<!-- <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />-->
|
||||
<!-- <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />-->
|
||||
<!-- Android 14版本适配,部分允许还是全部允许-->
|
||||
<!-- <uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />-->
|
||||
|
||||
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_SMS" />
|
||||
<!-- <uses-permission android:name="android.permission.RECEIVE_SMS" />-->
|
||||
<uses-permission android:name="android.permission.REORDER_TASKS" />
|
||||
<uses-permission android:name="android.permission.SEND_SMS" />
|
||||
<!-- <uses-permission android:name="android.permission.SEND_SMS" />-->
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- SD卡读取权限,用户写入离线定位数据 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 如果没有VOIP功能可以忽略 -->
|
||||
@@ -1229,6 +1242,11 @@
|
||||
<!-- <category android:name="android.intent.category.BROWSABLE" /> -->
|
||||
<!-- </intent-filter> -->
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.UniappPayCourseActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppThemeNew" /> <!-- 小程序 支付 -->
|
||||
<activity
|
||||
android:name=".activity.PayCourseActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
@@ -1854,6 +1872,11 @@
|
||||
android:name=".photo.AlbumPreviewActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppThemeNew" />
|
||||
<activity
|
||||
android:name=".activity.AllPhotosActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppThemeNew" />
|
||||
<activity
|
||||
android:name=".big.activity.BigPublicSearchActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
@@ -2081,6 +2104,16 @@
|
||||
android:resource="@xml/provider_paths"
|
||||
tools:replace="android:resource" />
|
||||
</provider>
|
||||
<provider
|
||||
android:name=".utils.UniappFileProvider"
|
||||
android:authorities="${applicationId}.dc.fileprovider"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/uniapp_provider_paths"
|
||||
tools:replace="android:resource" />
|
||||
</provider>
|
||||
<provider
|
||||
android:name="com.netease.nimlib.ipc.NIMContentProvider"
|
||||
android:authorities="cn.shangyu.gdxzExpert.ipc.provider"
|
||||
@@ -2294,11 +2327,13 @@
|
||||
<service
|
||||
android:name="com.umeng.message.XiaomiIntentService"
|
||||
android:exported="false"
|
||||
tools:replace="android:exported" />
|
||||
tools:replace="android:exported"
|
||||
tools:ignore="MissingClass" />
|
||||
<service
|
||||
android:name="com.umeng.message.UmengMessageIntentReceiverService"
|
||||
android:exported="false"
|
||||
tools:replace="android:exported" />
|
||||
tools:replace="android:exported"
|
||||
tools:ignore="MissingClass" />
|
||||
<service android:name=".report.ReportService" />
|
||||
|
||||
<!-- 微信分享 配置begin -->
|
||||
@@ -2318,6 +2353,7 @@
|
||||
<!-- </intent-filter>-->
|
||||
<!-- </activity>-->
|
||||
<!-- 微信分享 配置 end -->
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1 +1 @@
|
||||
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__89F511F","name":"肝胆相照专家版","version":{"name":"4.1.5","code":100},"description":"","developer":{"name":"","email":"","url":""},"permissions":{"Share":{},"Webview-x5":{},"UIWebview":{},"VideoPlayer":{},"OAuth":{},"Barcode":{},"Camera":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app gdxz","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"runmode":"liberate","usingComponents":true,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","compatible":{"ignoreVersion":true},"nativePlugins":{"NIMUniPlugin":{"PUSH_VIVO_APPID":"100034326","PUSH_VIVO_APPKEY":"e789634c1f76c8f184b1def1101ce824","PUSH_HONOR_APPID":"900782424","__plugin_info__":{"name":"NIMUniPlugin","description":"uni消息推送插件","platforms":"Android,iOS","url":"","android_package_name":"","ios_bundle_id":"","isCloud":false,"bought":-1,"pid":"","parameters":{"PUSH_VIVO_APPID":{"des":"厂商VIVO-app_id","key":"com.vivo.push.app_id","value":""},"PUSH_VIVO_APPKEY":{"des":"厂商VIVO-app_key","key":"com.vivo.push.api_key","value":""},"PUSH_HONOR_APPID":{"des":"厂商HONOR-app_id","key":"com.hihonor.push.app_id","value":""}}}}},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"uniStatistics":{"version":"2"},"allowsInlineMediaPlayback":true,"uni-app":{"control":"uni-v3","vueVersion":"3","compilerVersion":"4.76","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal","webView":{"minUserAgentVersion":"49.0"}}},"app-harmony":{"useragent":{"value":"uni-app","concatenate":true},"uniStatistics":{"version":"2"}},"locale":"zh-Hans","screenOrientation":["portrait-primary","portrait-secondary"],"launch_path":"__uniappview.html","fallbackLocale":"zh-Hans"}
|
||||
{"@platforms":["android","iPhone","iPad"],"app-harmony":{"uniStatistics":{"version":"2"},"useragent":{"concatenate":true,"value":"uni-app"}},"description":"","developer":{"email":"","name":"","url":""},"fallbackLocale":"zh-Hans","id":"__UNI__89F511F","launch_path":"__uniappview.html","locale":"zh-Hans","name":"肝胆相照专家版","permissions":{"Barcode":{},"Camera":{},"OAuth":{},"Payment":{},"Share":{},"UIWebview":{},"UniNView":{"description":"UniNView原生渲染"},"VideoPlayer":{},"Webview-x5":{}},"plus":{"allowsInlineMediaPlayback":true,"compatible":{"ignoreVersion":true},"launchwebview":{"id":"1","kernel":"WKWebview","render":"always"},"nativePlugins":{"NIMUniPlugin":{"PUSH_HONOR_APPID":"900782424","PUSH_VIVO_APPID":"100034326","PUSH_VIVO_APPKEY":"e789634c1f76c8f184b1def1101ce824","__plugin_info__":{"android_package_name":"","bought":-1,"description":"uni消息推送插件","ios_bundle_id":"","isCloud":false,"name":"NIMUniPlugin","parameters":{"PUSH_HONOR_APPID":{"des":"厂商HONOR-app_id","key":"com.hihonor.push.app_id","value":""},"PUSH_VIVO_APPID":{"des":"厂商VIVO-app_id","key":"com.vivo.push.app_id","value":""},"PUSH_VIVO_APPKEY":{"des":"厂商VIVO-app_key","key":"com.vivo.push.api_key","value":""}},"pid":"","platforms":"Android,iOS","url":""}}},"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","popGesture":"close","runmode":"liberate","splashscreen":{"autoclose":true,"delay":0,"target":"id:1","waiting":true},"statusbar":{"background":"#F8F8F8","immersed":"supportedDevice","style":"dark"},"uni-app":{"compilerVersion":"4.87","control":"uni-v3","nvue":{"flex-direction":"column"},"nvueCompiler":"uni-app","nvueLaunchMode":"normal","renderer":"auto","vueVersion":"3","webView":{"minUserAgentVersion":"49.0"}},"uniStatistics":{"version":"2"},"useragent":{"concatenate":true,"value":"uni-app gdxz"},"usingComponents":true},"screenOrientation":["portrait-primary","portrait-secondary"],"version":{"code":420,"name":"4.2.0"}}
|
||||
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
@@ -1,7 +1,6 @@
|
||||
<hbuilder version="1.9.9.80110" debug="false" syncDebug ="false">
|
||||
<!--<hbuilder version="1.9.9.80110" debug="false" syncDebug ="true">-->
|
||||
<apps>
|
||||
<app appid="unimp" appver="1.0"/>
|
||||
</apps>
|
||||
</hbuilder>
|
||||
|
||||
|
||||
|
||||
@@ -76,17 +76,17 @@ html,body{
|
||||
</head>
|
||||
<body>
|
||||
<div style="width:100%;height:20%;"></div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 512 512" style="height:20%;width:30%">
|
||||
<g id="icomoon-ignore">
|
||||
<line stroke-width="1" x1="" y1="" x2="" y2="" stroke="#449FDB" opacity=""></line>
|
||||
</g>
|
||||
<path d="M256 0c-141.385 0-256 114.615-256 256s114.615 256 256 256 256-114.615 256-256-114.615-256-256-256zM352 128c17.673 0 32 14.327 32 32s-14.327 32-32 32-32-14.327-32-32 14.327-32 32-32zM160 128c17.673 0 32 14.327 32 32s-14.327 32-32 32-32-14.327-32-32 14.327-32 32-32zM352.049 390.37c-19.587-32.574-55.272-54.37-96.049-54.37s-76.462 21.796-96.049 54.37l-41.164-24.698c27.98-46.535 78.958-77.672 137.213-77.672s109.232 31.137 137.213 77.672l-41.164 24.698z" fill="#666666"></path>
|
||||
</svg>
|
||||
<p style="font-size:18px;font-weight:bolder;">We're sorry ...</p>
|
||||
<p id="info" style="font-size:12px;"></p>
|
||||
<!-- <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 512 512" style="height:20%;width:30%"> -->
|
||||
<!-- <g id="icomoon-ignore">-->
|
||||
<!-- <line stroke-width="1" x1="" y1="" x2="" y2="" stroke="#449FDB" opacity=""></line>-->
|
||||
<!-- </g>-->
|
||||
<!-- <path d="M256 0c-141.385 0-256 114.615-256 256s114.615 256 256 256 256-114.615 256-256-114.615-256-256-256zM352 128c17.673 0 32 14.327 32 32s-14.327 32-32 32-32-14.327-32-32 14.327-32 32-32zM160 128c17.673 0 32 14.327 32 32s-14.327 32-32 32-32-14.327-32-32 14.327-32 32-32zM352.049 390.37c-19.587-32.574-55.272-54.37-96.049-54.37s-76.462 21.796-96.049 54.37l-41.164-24.698c27.98-46.535 78.958-77.672 137.213-77.672s109.232 31.137 137.213 77.672l-41.164 24.698z" fill="#666666"></path>-->
|
||||
<!-- </svg>-->
|
||||
<p style="font-size:18px;font-weight:bolder;">网络异常</p>
|
||||
<!-- <p id="info" style="font-size:12px;"></p>-->
|
||||
<!--<div class="button" onclick="history.back()">Retry</div>-->
|
||||
<div class="button" onclick="if(history.length == 1){ws.close();}else{ws.back();ws.back();}">Back</div>
|
||||
<div class="button" onclick="ws.close()">Close</div>
|
||||
<div class="button" onclick="plus.runtime.restart()">Restart</div>
|
||||
<!-- <div class="button" onclick="if(history.length == 1){ws.close();}else{ws.back();ws.back();}">返回</div>-->
|
||||
<!-- <div class="button" onclick="ws.close()">Close</div>-->
|
||||
<div class="button" onclick="plus.runtime.quit()">关闭</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -843,32 +843,22 @@ public class AddCaseRecordActivity extends BaseActivity implements
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method stub
|
||||
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(AddCaseRecordActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 拍照主要需要 CAMERA 权限
|
||||
hasPermission = PermissionsUtil.hasPermission(AddCaseRecordActivity.this, Manifest.permission.CAMERA);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
|
||||
} else {
|
||||
EasyWindow.with(AddCaseRecordActivity.this).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
|
||||
|
||||
.setContentView(R.layout.float_top_dialog_new).show();
|
||||
PermissionsUtil.requestPermission(AddCaseRecordActivity.this, new PermissionListener() {
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
|
||||
}
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
//用户拒绝了访问读写的申请
|
||||
EasyWindow.cancelAll(); return;
|
||||
// Android 12及以下需要 CAMERA 和存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(AddCaseRecordActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}
|
||||
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
|
||||
if (PermissionsUtil.hasPermission(AddCaseRecordActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
if (hasPermission) {
|
||||
//有访问摄像头的权限
|
||||
takePhoto11();
|
||||
} else {
|
||||
@@ -888,7 +878,7 @@ public class AddCaseRecordActivity extends BaseActivity implements
|
||||
EasyWindow.cancelAll();
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
@@ -903,11 +893,17 @@ public class AddCaseRecordActivity extends BaseActivity implements
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method stub
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(AddCaseRecordActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有访问摄像头的权限,读写内存,网络定位,打电话,读取短信,录音,通讯录
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
|
||||
// Android 6.0 ~ 12 使用存储权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
hasPermission = PermissionsUtil.hasPermission(AddCaseRecordActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问相册的权限
|
||||
Intent intent = new Intent(mActivity, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
mActivity.startActivityForResult(intent,
|
||||
SELECT_PIC_BY_PICK_PHOTO);
|
||||
@@ -920,7 +916,7 @@ public class AddCaseRecordActivity extends BaseActivity implements
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
Intent intent = new Intent(mActivity, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
mActivity.startActivityForResult(intent,
|
||||
SELECT_PIC_BY_PICK_PHOTO);
|
||||
@@ -932,15 +928,9 @@ public class AddCaseRecordActivity extends BaseActivity implements
|
||||
EasyWindow.cancelAll();
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
mActivity.startActivityForResult(intent,
|
||||
SELECT_PIC_BY_PICK_PHOTO);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.app.Activity;
|
||||
import android.app.DatePickerDialog;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.ClipData;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -102,6 +103,7 @@ import cn.shangyu.gdxzExpert.widget.LoadingPage.ResultState;
|
||||
@SuppressWarnings("serial")
|
||||
public class AddcasediscussionActivity extends BaseActivity implements
|
||||
OnCallBackFromNet, OnItemClickListener {
|
||||
private static final int MAX_PHOTOS = 9; // 病例讨论最多可选择的图片张数
|
||||
private View mView;
|
||||
private AddcasediscussionActivity mActivity;
|
||||
public static final int GET_RESULT_ADD_CASERECORD = 201;
|
||||
@@ -229,7 +231,10 @@ public class AddcasediscussionActivity extends BaseActivity implements
|
||||
setLableData();
|
||||
} else {
|
||||
if (!isFirst) {
|
||||
// 避免重复 addView 导致 “The specified child already has a parent” 异常
|
||||
if (tvhint.getParent() == null) {
|
||||
mLabel_one.addView(tvhint);
|
||||
}
|
||||
tvhint.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
@@ -299,9 +304,7 @@ public class AddcasediscussionActivity extends BaseActivity implements
|
||||
public void handleMessage(android.os.Message msg) {
|
||||
switch (msg.what) {
|
||||
case HANDLER_PHOTOS:
|
||||
if (mBitmaps.size() < 8) {
|
||||
mBitmaps.add(mAddBitmaps);
|
||||
}
|
||||
ensureAddButton();
|
||||
closeProgressDialog();
|
||||
gv_adapter.notifyDataSetChanged();
|
||||
break;
|
||||
@@ -425,19 +428,44 @@ public class AddcasediscussionActivity extends BaseActivity implements
|
||||
mBitmaps.add(new AddBitmaps(false, null, mDatasCase
|
||||
.getPhoto().get(i)));
|
||||
}
|
||||
if (mDatasCase.getPhoto().size() < 5) {
|
||||
mBitmaps.add(mAddBitmaps);
|
||||
// mBt_deleteRecord.setVisibility(View.VISIBLE);
|
||||
}
|
||||
} else {
|
||||
mBitmaps.add(mAddBitmaps);
|
||||
}
|
||||
|
||||
} else {
|
||||
mBt_deleteRecord.setVisibility(View.GONE);
|
||||
mBitmaps.add(mAddBitmaps);
|
||||
}
|
||||
|
||||
ensureAddButton();
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算当前已选图片张数(不包括“添加”占位)
|
||||
*/
|
||||
private int getCurrentPhotoCount() {
|
||||
if (mBitmaps == null) return 0;
|
||||
int count = 0;
|
||||
for (AddBitmaps item : mBitmaps) {
|
||||
if (item != null && !item.isAdd()) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据当前图片数量,决定是否显示“添加”按钮,并避免重复添加
|
||||
*/
|
||||
private void ensureAddButton() {
|
||||
if (mBitmaps == null) return;
|
||||
// 先移除所有“添加”占位
|
||||
for (int i = mBitmaps.size() - 1; i >= 0; i--) {
|
||||
if (mBitmaps.get(i) != null && mBitmaps.get(i).isAdd()) {
|
||||
mBitmaps.remove(i);
|
||||
}
|
||||
}
|
||||
// 若未达到最大张数,则追加一个“添加”按钮
|
||||
if (getCurrentPhotoCount() < MAX_PHOTOS) {
|
||||
mBitmaps.add(mAddBitmaps);
|
||||
}
|
||||
}
|
||||
|
||||
public Calendar mGoCaTime = Calendar.getInstance(Locale.CHINA);
|
||||
@@ -564,13 +592,60 @@ public class AddcasediscussionActivity extends BaseActivity implements
|
||||
if (data == null) {
|
||||
break;
|
||||
}
|
||||
paths = (ArrayList<PhotoItem>) data.getSerializableExtra("photos");
|
||||
mBitmaps.remove(mAddBitmaps);
|
||||
showProgressDialog("");
|
||||
|
||||
final Intent dataFinal = data;
|
||||
new Thread() {
|
||||
public void run() {
|
||||
for (int i = 0; i < paths.size(); i++) {
|
||||
InputStream is;
|
||||
try {
|
||||
// Android 13+:来自 Photo Picker,使用 ClipData / data Uri
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
ArrayList<Uri> uris = new ArrayList<>();
|
||||
if (dataFinal.getClipData() != null) {
|
||||
ClipData clipData = dataFinal.getClipData();
|
||||
int remain = MAX_PHOTOS - getCurrentPhotoCount();
|
||||
for (int i = 0; i < clipData.getItemCount() && uris.size() < remain; i++) {
|
||||
Uri u = clipData.getItemAt(i).getUri();
|
||||
if (u != null) uris.add(u);
|
||||
}
|
||||
} else if (dataFinal.getData() != null) {
|
||||
if (getCurrentPhotoCount() < MAX_PHOTOS) {
|
||||
uris.add(dataFinal.getData());
|
||||
}
|
||||
}
|
||||
|
||||
for (Uri uri : uris) {
|
||||
InputStream is = null;
|
||||
try {
|
||||
is = getContentResolver().openInputStream(uri);
|
||||
BitmapFactory.Options opts = new BitmapFactory.Options();
|
||||
// opts.inJustDecodeBounds = true;
|
||||
opts.inTempStorage = new byte[100 * 1024];
|
||||
opts.inPreferredConfig = Bitmap.Config.RGB_565;
|
||||
opts.inPurgeable = true;
|
||||
opts.inSampleSize = calculateInSampleSize(opts, 720, 1280);
|
||||
opts.inInputShareable = true;
|
||||
Bitmap bitmap = BitmapFactory.decodeStream(is, null, opts);
|
||||
if (bitmap != null) {
|
||||
mBitmaps.add(new AddBitmaps(false, bitmap, null));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (is != null) {
|
||||
try {
|
||||
is.close();
|
||||
} catch (IOException ignored) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Android 6.0 ~ 12:来自自定义 PhotoAlbumActivity,序列化返回 PhotoItem 列表
|
||||
paths = (ArrayList<PhotoItem>) dataFinal.getSerializableExtra("photos");
|
||||
if (paths != null) {
|
||||
for (int i = 0; i < paths.size() && getCurrentPhotoCount() < MAX_PHOTOS; i++) {
|
||||
InputStream is = null;
|
||||
try {
|
||||
is = new FileInputStream(paths.get(i).getPath());
|
||||
BitmapFactory.Options opts = new BitmapFactory.Options();
|
||||
@@ -578,22 +653,28 @@ public class AddcasediscussionActivity extends BaseActivity implements
|
||||
opts.inTempStorage = new byte[100 * 1024];
|
||||
opts.inPreferredConfig = Bitmap.Config.RGB_565;
|
||||
opts.inPurgeable = true;
|
||||
BitmapFactory.decodeFile(paths.get(i).getPath(),
|
||||
opts);
|
||||
opts.inSampleSize = calculateInSampleSize(opts,
|
||||
720, 1280);
|
||||
BitmapFactory.decodeFile(paths.get(i).getPath(), opts);
|
||||
opts.inSampleSize = calculateInSampleSize(opts, 720, 1280);
|
||||
opts.inInputShareable = true;
|
||||
Bitmap bitmap = BitmapFactory.decodeStream(is,
|
||||
null, opts);
|
||||
Bitmap bitmap = BitmapFactory.decodeStream(is, null, opts);
|
||||
if (bitmap != null) {
|
||||
mBitmaps.add(new AddBitmaps(false, bitmap, null));
|
||||
|
||||
} catch (FileNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (is != null) {
|
||||
try {
|
||||
is.close();
|
||||
} catch (IOException ignored) {}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
handler.sendEmptyMessage(HANDLER_PHOTOS);
|
||||
}
|
||||
};
|
||||
}.start();
|
||||
break;
|
||||
@@ -976,8 +1057,21 @@ public class AddcasediscussionActivity extends BaseActivity implements
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限,保存到公共目录可能需要 READ_MEDIA_IMAGES
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
if (PermissionsUtil.hasPermission(AddcasediscussionActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 拍照主要需要 CAMERA 权限
|
||||
hasPermission = PermissionsUtil.hasPermission(AddcasediscussionActivity.this, Manifest.permission.CAMERA);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
|
||||
} else {
|
||||
// Android 12及以下需要 CAMERA 和存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(AddcasediscussionActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问摄像头的权限
|
||||
takePhoto11();// 拍照获取
|
||||
} else {
|
||||
@@ -999,7 +1093,7 @@ public class AddcasediscussionActivity extends BaseActivity implements
|
||||
isFirst = true;
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.CAMERA, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
@@ -1015,46 +1109,60 @@ public class AddcasediscussionActivity extends BaseActivity implements
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method stub
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(AddcasediscussionActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有读写内存
|
||||
// 一次选择多张图片(总数不超过 MAX_PHOTOS)
|
||||
int remain = MAX_PHOTOS - getCurrentPhotoCount();
|
||||
if (remain <= 0) {
|
||||
Toast.makeText(mActivity, "最多只能选择 " + MAX_PHOTOS + " 张图片", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 使用新版 Photo Picker,多选上限为 remain
|
||||
Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
|
||||
intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, remain);
|
||||
mActivity.startActivityForResult(intent, SELECT_PIC_BY_PICK_PHOTO);
|
||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// Android 6.0 ~ 12 按 MyIdeaActivity 的方式,进入自定义相册页面(支持多选)
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
hasPermission = PermissionsUtil.hasPermission(AddcasediscussionActivity.this,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
|
||||
if (hasPermission) {
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
mActivity.startActivityForResult(intent,
|
||||
SELECT_PIC_BY_PICK_PHOTO);
|
||||
intent.putExtra("maxphotonum", MAX_PHOTOS);
|
||||
mActivity.startActivityForResult(intent, SELECT_PIC_BY_PICK_PHOTO);
|
||||
} else {
|
||||
EasyWindow.with(AddcasediscussionActivity.this).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
|
||||
|
||||
.setContentView(R.layout.float_top_dialog_photo).show();
|
||||
PermissionsUtil.requestPermission(AddcasediscussionActivity.this, new PermissionListener() {
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
mActivity.startActivityForResult(intent,
|
||||
SELECT_PIC_BY_PICK_PHOTO);
|
||||
|
||||
intent.putExtra("maxphotonum", MAX_PHOTOS);
|
||||
mActivity.startActivityForResult(intent, SELECT_PIC_BY_PICK_PHOTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户拒绝了访问读写的申请
|
||||
//用户拒绝了访问相册的申请
|
||||
isFirst = true;
|
||||
|
||||
//
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
} else {
|
||||
// M 以下直接进入自定义相册页面
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
mActivity.startActivityForResult(intent,
|
||||
SELECT_PIC_BY_PICK_PHOTO);
|
||||
intent.putExtra("maxphotonum", MAX_PHOTOS);
|
||||
mActivity.startActivityForResult(intent, SELECT_PIC_BY_PICK_PHOTO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,460 @@
|
||||
package cn.shangyu.gdxzExpert.activity;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.Cursor;
|
||||
import android.os.Build;
|
||||
import android.provider.MediaStore;
|
||||
import android.provider.MediaStore.Images.Thumbnails;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.FrameLayout.LayoutParams;
|
||||
import android.widget.GridView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
|
||||
import java.io.InvalidClassException;
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import cn.shangyu.gdxzExpert.R;
|
||||
import cn.shangyu.gdxzExpert.adapter.PhotoAdappter2;
|
||||
import cn.shangyu.gdxzExpert.base.BaseActivity;
|
||||
import cn.shangyu.gdxzExpert.bean.PhotoAibum;
|
||||
import cn.shangyu.gdxzExpert.bean.PhotoItem;
|
||||
import cn.shangyu.gdxzExpert.ecdemo.common.ECPreferenceSettings;
|
||||
import cn.shangyu.gdxzExpert.ecdemo.common.ECPreferences;
|
||||
import cn.shangyu.gdxzExpert.photo.AlbumPreviewActivity;
|
||||
import cn.shangyu.gdxzExpert.utils.LogUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.ToastUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.UIUtils;
|
||||
import cn.shangyu.gdxzExpert.widget.LoadingPage.ResultState;
|
||||
|
||||
/******************************************
|
||||
* 类描述: 直接显示全部照片的相册选择页面 类名称:AllPhotosActivity
|
||||
*
|
||||
* @version: 1.0
|
||||
* @author: Auto
|
||||
* @time: 2024
|
||||
*****************************************/
|
||||
public class AllPhotosActivity extends BaseActivity {
|
||||
private GridView photosGV;
|
||||
private PhotoAdappter2 adapter;
|
||||
private View view;
|
||||
private Intent getIntent;
|
||||
private String haveNums;
|
||||
private String istopc;
|
||||
private boolean isTopc = false;
|
||||
private boolean isTalke = false;
|
||||
private ArrayList<PhotoItem> gl_arr = new ArrayList<PhotoItem>();
|
||||
private int PhotoNum = 8;
|
||||
int maxnumber, issendgroup;
|
||||
|
||||
// 设置获取图片的字段信息
|
||||
private static final String[] STORE_IMAGES = {
|
||||
MediaStore.Images.Media.DISPLAY_NAME, // 显示的名称
|
||||
MediaStore.Images.Media.DATA,//路径
|
||||
MediaStore.Images.Media.LONGITUDE, // 经度
|
||||
MediaStore.Images.Media._ID, // id
|
||||
MediaStore.Images.Media.BUCKET_ID, // dir id 目录
|
||||
MediaStore.Images.Media.BUCKET_DISPLAY_NAME // dir name 目录名字
|
||||
};
|
||||
|
||||
@Override
|
||||
public void setTitle() {
|
||||
top_title.setText("选择图片");
|
||||
}
|
||||
|
||||
private PhotoAibum allPhotosAibum;
|
||||
|
||||
@Override
|
||||
public View onCreateSuccessedView() {
|
||||
LogUtil.d("AllPhotosActivity", "onCreateSuccessedView: 开始创建视图");
|
||||
ImmersionBar.with(this).keyboardEnable(true).statusBarDarkFont(true).titleBar(mToolbar).init();
|
||||
view = UIUtils.inflate(R.layout.activity_photoalbum);
|
||||
photosGV = (GridView) view.findViewById(R.id.album_gridview);
|
||||
|
||||
if (photosGV == null) {
|
||||
LogUtil.e("AllPhotosActivity", "onCreateSuccessedView: photosGV 为 null");
|
||||
}
|
||||
|
||||
// 直接加载所有照片
|
||||
allPhotosAibum = getAllPhotos();
|
||||
|
||||
LogUtil.d("AllPhotosActivity", "onCreateSuccessedView: 照片加载完成, allPhotosAibum.bitList.size=" +
|
||||
(allPhotosAibum != null && allPhotosAibum.bitList != null ? allPhotosAibum.bitList.size() : 0));
|
||||
|
||||
if (allPhotosAibum == null || allPhotosAibum.bitList == null || allPhotosAibum.bitList.isEmpty()) {
|
||||
LogUtil.w("AllPhotosActivity", "onCreateSuccessedView: 照片列表为空,无法显示照片");
|
||||
}
|
||||
|
||||
initIntent();
|
||||
initPhotosView();
|
||||
LogUtil.d("AllPhotosActivity", "onCreateSuccessedView: 视图创建完成");
|
||||
return view;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化照片视图
|
||||
*/
|
||||
private void initPhotosView() {
|
||||
top_right_text.setVisibility(View.VISIBLE);
|
||||
if (isTopc) {
|
||||
maxnumber = 3;
|
||||
PhotoNum = 3;
|
||||
top_right_text.setText("确认" + haveNums + "/3");
|
||||
} else {
|
||||
maxnumber = PhotoNum;
|
||||
top_right_text.setText("确认" + haveNums + "/" + PhotoNum);
|
||||
}
|
||||
|
||||
top_right_text.setTextColor(AllPhotosActivity.this.getResources()
|
||||
.getColor(R.color.white));
|
||||
top_right_text.setTextSize(14);
|
||||
top_right_text.setBackgroundResource(R.drawable.selector_btn);
|
||||
LayoutParams paras = (LayoutParams) top_right_text
|
||||
.getLayoutParams();
|
||||
paras.setMargins(0, 0, dip2px(AllPhotosActivity.this, 10), 0);
|
||||
paras.height = dip2px(AllPhotosActivity.this, 30);
|
||||
top_right_text.setLayoutParams(paras);
|
||||
|
||||
top_right_text.setOnClickListener(this);
|
||||
adapter = new PhotoAdappter2(this, allPhotosAibum);
|
||||
photosGV.setNumColumns(3);
|
||||
photosGV.setAdapter(adapter);
|
||||
adapter.setOnItemClickListener(new PhotoAdappter2.ViewItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(int position) {
|
||||
if (potisions.contains(position + "")) {
|
||||
potisions.remove(position + "");
|
||||
haveNums = (Integer.parseInt(haveNums) - 1) + "";
|
||||
} else {
|
||||
if (isTopc) {
|
||||
if (Integer.parseInt(haveNums) < 3) {
|
||||
potisions.add(position + "");
|
||||
haveNums = (Integer.parseInt(haveNums) + 1) + "";
|
||||
maxnumber = 3;
|
||||
} else {
|
||||
ToastUtil.showMessage("最多添加" + PhotoNum + "张");
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (Integer.parseInt(haveNums) < PhotoNum) {
|
||||
potisions.add(position + "");
|
||||
haveNums = (Integer.parseInt(haveNums) + 1) + "";
|
||||
maxnumber = PhotoNum;
|
||||
} else {
|
||||
ToastUtil.showMessage("最多添加" + PhotoNum + "张");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isTopc) {
|
||||
maxnumber = 3;
|
||||
top_right_text.setText("确认" + haveNums + "/3");
|
||||
} else {
|
||||
maxnumber = PhotoNum;
|
||||
top_right_text.setText("确认" + haveNums + "/" + PhotoNum);
|
||||
}
|
||||
|
||||
adapter.getPosition(potisions);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
photosGV.setOnItemClickListener(gvItemClickListener);
|
||||
}
|
||||
|
||||
private ArrayList<String> potisions = new ArrayList<String>();
|
||||
|
||||
private OnItemClickListener gvItemClickListener = new OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position,
|
||||
long id) {
|
||||
Intent intent = new Intent(AllPhotosActivity.this, AlbumPreviewActivity.class);
|
||||
intent.putExtra(AlbumPreviewActivity.ARG_BUCKET_INDEX, 0);
|
||||
intent.putExtra(AlbumPreviewActivity.ARG_INDEX, position);
|
||||
intent.putExtra(AlbumPreviewActivity.MAX_NUMBER, maxnumber);
|
||||
intent.putExtra("aibum", allPhotosAibum);
|
||||
intent.putExtra("haveNums", Integer.parseInt(haveNums));
|
||||
intent.putStringArrayListExtra("potisions", potisions);
|
||||
startActivityForResult(intent, 500);
|
||||
}
|
||||
};
|
||||
|
||||
ContentResolver cr;
|
||||
|
||||
public void getpath() {
|
||||
LogUtil.d("AllPhotosActivity", "getpath: potisions=" + (potisions != null ? "not null, size=" + potisions.size() : "null") +
|
||||
", allPhotosAibum=" + (allPhotosAibum != null ? "not null" : "null") +
|
||||
", allPhotosAibum.bitList=" + (allPhotosAibum != null && allPhotosAibum.bitList != null ? "not null, size=" + allPhotosAibum.bitList.size() : "null"));
|
||||
gl_arr.clear();
|
||||
if (potisions == null || potisions.isEmpty()) {
|
||||
LogUtil.w("AllPhotosActivity", "getpath: potisions 为空,没有选中的照片");
|
||||
return;
|
||||
}
|
||||
if (allPhotosAibum == null || allPhotosAibum.bitList == null || allPhotosAibum.bitList.isEmpty()) {
|
||||
LogUtil.w("AllPhotosActivity", "getpath: allPhotosAibum 或 bitList 为空,无法获取照片");
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < potisions.size(); i++) {
|
||||
try {
|
||||
int position = Integer.parseInt(potisions.get(i));
|
||||
if (position >= 0 && position < allPhotosAibum.bitList.size()) {
|
||||
PhotoItem item = allPhotosAibum.bitList.get(position);
|
||||
if (item != null) {
|
||||
gl_arr.add(item);
|
||||
LogUtil.d("AllPhotosActivity", "getpath: 添加 PhotoItem[" + i + "], position=" + position + ", path=" + item.getPath());
|
||||
} else {
|
||||
LogUtil.e("AllPhotosActivity", "getpath: PhotoItem[" + position + "] 为 null");
|
||||
}
|
||||
} else {
|
||||
LogUtil.e("AllPhotosActivity", "getpath: 索引越界, position=" + position + ", bitList.size=" + allPhotosAibum.bitList.size());
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
LogUtil.e("AllPhotosActivity", "getpath: 无法解析位置索引[" + i + "]=" + potisions.get(i) + ", error: " + e.getMessage());
|
||||
} catch (Exception e) {
|
||||
LogUtil.e("AllPhotosActivity", "getpath: 处理位置[" + i + "]时发生异常, error: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
LogUtil.d("AllPhotosActivity", "getpath: 最终 gl_arr.size=" + gl_arr.size());
|
||||
}
|
||||
|
||||
private void getThumbnail() {
|
||||
LogUtil.d("AllPhotosActivity", "getThumbnail: 开始加载缩略图");
|
||||
cr = AllPhotosActivity.this.getContentResolver();
|
||||
String[] projection = { Thumbnails._ID, Thumbnails.IMAGE_ID,
|
||||
Thumbnails.DATA };
|
||||
try {
|
||||
Cursor cursor = cr.query(Thumbnails.EXTERNAL_CONTENT_URI, projection,
|
||||
null, null, null);
|
||||
if (cursor == null) {
|
||||
LogUtil.w("AllPhotosActivity", "getThumbnail: cursor 为 null");
|
||||
} else {
|
||||
LogUtil.d("AllPhotosActivity", "getThumbnail: cursor.count=" + cursor.getCount());
|
||||
getThumbnailColumnData(cursor);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LogUtil.e("AllPhotosActivity", "getThumbnail: 查询缩略图时发生异常, error: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
HashMap<String, String> thumbnailList = new HashMap<String, String>();
|
||||
|
||||
private void getThumbnailColumnData(Cursor cur) {
|
||||
if (cur.moveToFirst()) {
|
||||
int _id;
|
||||
int image_id;
|
||||
String image_path;
|
||||
int _idColumn = cur.getColumnIndex(Thumbnails._ID);
|
||||
int image_idColumn = cur.getColumnIndex(Thumbnails.IMAGE_ID);
|
||||
int dataColumn = cur.getColumnIndex(Thumbnails.DATA);
|
||||
|
||||
do {
|
||||
_id = cur.getInt(_idColumn);
|
||||
image_id = cur.getInt(image_idColumn);
|
||||
image_path = cur.getString(dataColumn);
|
||||
thumbnailList.put("" + image_id, image_path);
|
||||
} while (cur.moveToNext());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 方法描述:获取所有照片(不分类)
|
||||
*
|
||||
* @author: Auto
|
||||
* @time: 2024
|
||||
*/
|
||||
private PhotoAibum getAllPhotos() {
|
||||
LogUtil.d("AllPhotosActivity", "getAllPhotos: 开始加载所有照片, SDK_INT=" + Build.VERSION.SDK_INT);
|
||||
getThumbnail();
|
||||
PhotoAibum allPhotos = new PhotoAibum();
|
||||
allPhotos.setName("全部图片");
|
||||
|
||||
// 检查权限
|
||||
boolean hasPermission = false;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 需要 READ_MEDIA_IMAGES 权限
|
||||
hasPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
|
||||
LogUtil.d("AllPhotosActivity", "getAllPhotos: Android 13+, READ_MEDIA_IMAGES permission=" + hasPermission);
|
||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// Android 6.0-12 需要 READ_EXTERNAL_STORAGE 权限
|
||||
hasPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
|
||||
LogUtil.d("AllPhotosActivity", "getAllPhotos: Android 6.0-12, READ_EXTERNAL_STORAGE permission=" + hasPermission);
|
||||
} else {
|
||||
// Android 6.0 以下不需要运行时权限
|
||||
hasPermission = true;
|
||||
LogUtil.d("AllPhotosActivity", "getAllPhotos: Android < 6.0, 不需要运行时权限");
|
||||
}
|
||||
|
||||
if (!hasPermission) {
|
||||
LogUtil.e("AllPhotosActivity", "getAllPhotos: 没有读取照片的权限,无法查询照片");
|
||||
ToastUtil.showMessage("需要照片访问权限才能查看相册");
|
||||
return allPhotos;
|
||||
}
|
||||
|
||||
try {
|
||||
LogUtil.d("AllPhotosActivity", "getAllPhotos: 查询 MediaStore.Images.Media.EXTERNAL_CONTENT_URI=" + MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
|
||||
Cursor cursor = null;
|
||||
try {
|
||||
cursor = getContentResolver().query(
|
||||
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
|
||||
STORE_IMAGES,
|
||||
null,
|
||||
null,
|
||||
MediaStore.Images.Media.DATE_ADDED + " ASC");
|
||||
} catch (SecurityException e) {
|
||||
LogUtil.e("AllPhotosActivity", "getAllPhotos: SecurityException - 权限被拒绝, error: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
ToastUtil.showMessage("无法访问照片,请检查权限设置");
|
||||
return allPhotos;
|
||||
} catch (Exception e) {
|
||||
LogUtil.e("AllPhotosActivity", "getAllPhotos: 查询时发生异常, error: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
return allPhotos;
|
||||
}
|
||||
|
||||
if (cursor == null) {
|
||||
LogUtil.e("AllPhotosActivity", "getAllPhotos: cursor 为 null,无法查询照片");
|
||||
return allPhotos;
|
||||
}
|
||||
|
||||
int cursorCount = cursor.getCount();
|
||||
LogUtil.d("AllPhotosActivity", "getAllPhotos: cursor.count=" + cursorCount);
|
||||
|
||||
if (cursorCount == 0) {
|
||||
LogUtil.w("AllPhotosActivity", "getAllPhotos: cursor 为空,没有找到照片。可能原因:1)设备上没有照片 2)权限问题 3)Android 10+分区存储限制");
|
||||
cursor.close();
|
||||
return allPhotos;
|
||||
}
|
||||
|
||||
List<PhotoItem> photoList = allPhotos.getBitList();
|
||||
int processedCount = 0;
|
||||
|
||||
while (cursor.moveToNext()) {
|
||||
try {
|
||||
String path = cursor.getString(1) + "";
|
||||
String id = cursor.getString(3) + "";
|
||||
|
||||
if (path == null || path.isEmpty() || "null".equals(path)) {
|
||||
LogUtil.w("AllPhotosActivity", "getAllPhotos: 跳过无效路径的照片, id=" + id);
|
||||
continue;
|
||||
}
|
||||
|
||||
processedCount++;
|
||||
if (processedCount <= 5) {
|
||||
LogUtil.d("AllPhotosActivity", "getAllPhotos: 处理照片[" + processedCount + "], id=" + id + ", path=" + path);
|
||||
}
|
||||
|
||||
photoList.add(new PhotoItem(Integer.valueOf(id), path));
|
||||
} catch (Exception e) {
|
||||
LogUtil.e("AllPhotosActivity", "getAllPhotos: 处理照片时发生异常, error: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
cursor.close();
|
||||
|
||||
allPhotos.setCount(photoList.size());
|
||||
LogUtil.d("AllPhotosActivity", "getAllPhotos: 处理完成, processedCount=" + processedCount + ", total=" + photoList.size());
|
||||
} catch (Exception e) {
|
||||
LogUtil.e("AllPhotosActivity", "getAllPhotos: 发生异常, error: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return allPhotos;
|
||||
}
|
||||
|
||||
private void initIntent() {
|
||||
getIntent = getIntent();
|
||||
haveNums = getIntent.getStringExtra("photonum");
|
||||
PhotoNum = getIntent.getIntExtra("maxphotonum", 8);
|
||||
issendgroup = getIntent.getIntExtra("issendgroup", 0);
|
||||
if (haveNums.equals("-1")) {
|
||||
PhotoNum = 5;
|
||||
haveNums = "0";
|
||||
isTalke = true;
|
||||
} else if ("1".equals(issendgroup + "")) {
|
||||
isTalke = true;
|
||||
}
|
||||
istopc = getIntent.getStringExtra("isTopic");
|
||||
if (istopc != null && istopc.equals("isTopic")) {
|
||||
isTopc = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultState onLoad() {
|
||||
return ResultState.STATE_SUCCESSED;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void processClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.top_right_text:
|
||||
LogUtil.d("AllPhotosActivity", "确认按钮点击,开始返回照片数据");
|
||||
getpath();
|
||||
LogUtil.d("AllPhotosActivity", "确认按钮: gl_arr.size=" + gl_arr.size() + ", isTalke=" + isTalke);
|
||||
if (gl_arr.size() > 0) {
|
||||
try {
|
||||
ECPreferences.savePreference(
|
||||
ECPreferenceSettings.SETTINGS_PREVIEW_SELECTED,
|
||||
Boolean.TRUE, true);
|
||||
} catch (InvalidClassException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
for (int i = 0; i < gl_arr.size(); i++) {
|
||||
PhotoItem item = gl_arr.get(i);
|
||||
LogUtil.d("AllPhotosActivity", "返回 PhotoItem[" + i + "]: path=" + (item != null ? item.getPath() : "null"));
|
||||
}
|
||||
} else {
|
||||
LogUtil.w("AllPhotosActivity", "确认按钮: gl_arr 为空,没有选择照片");
|
||||
}
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra("photos", (Serializable) gl_arr);
|
||||
if (isTalke) {
|
||||
setResult(RESULT_OK, intent);
|
||||
LogUtil.d("AllPhotosActivity", "设置返回结果: RESULT_OK, photos count=" + gl_arr.size());
|
||||
} else {
|
||||
setResult(102, intent);
|
||||
LogUtil.d("AllPhotosActivity", "设置返回结果: 102, photos count=" + gl_arr.size());
|
||||
}
|
||||
|
||||
this.finish();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// dp到像素的转换
|
||||
public static int dip2px(Context context, double d) {
|
||||
final float scale = context.getResources().getDisplayMetrics().density;
|
||||
return (int) (d * scale + 0.5f);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (requestCode == 500) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
potisions = data.getExtras().getStringArrayList("potisions");
|
||||
haveNums = data.getExtras().getInt("haveNums") + "";
|
||||
adapter.getPosition(potisions);
|
||||
adapter.notifyDataSetChanged();
|
||||
top_right_text.setText("确认" + haveNums + "/" + maxnumber + "张");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -470,8 +470,21 @@ public class BiochemistryActivity extends BaseActivity implements AdapterView.On
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
if (PermissionsUtil.hasPermission(BiochemistryActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 拍照主要需要 CAMERA 权限
|
||||
hasPermission = PermissionsUtil.hasPermission(BiochemistryActivity.this, Manifest.permission.CAMERA);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
|
||||
} else {
|
||||
// Android 12及以下需要 CAMERA 和存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(BiochemistryActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问摄像头的权限
|
||||
takePhoto11();// 拍照获取
|
||||
} else {
|
||||
@@ -492,7 +505,7 @@ public class BiochemistryActivity extends BaseActivity implements AdapterView.On
|
||||
|
||||
}
|
||||
|
||||
}, new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
@@ -508,11 +521,17 @@ public class BiochemistryActivity extends BaseActivity implements AdapterView.On
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(BiochemistryActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有访问摄像头的权限,读写内存,网络定位,打电话,读取短信,录音,通讯录
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
|
||||
// Android 6.0 ~ 12 使用旧的存储权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
hasPermission = PermissionsUtil.hasPermission(BiochemistryActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问相册的权限
|
||||
Intent intent = new Intent(mActivity, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,
|
||||
@@ -525,7 +544,7 @@ public class BiochemistryActivity extends BaseActivity implements AdapterView.On
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
Intent intent = new Intent(BiochemistryActivity.this, PhotoAlbumActivity.class);
|
||||
Intent intent = new Intent(BiochemistryActivity.this, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
@@ -539,15 +558,10 @@ public class BiochemistryActivity extends BaseActivity implements AdapterView.On
|
||||
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
Intent intent = new Intent(BiochemistryActivity.this, PhotoAlbumActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -682,9 +682,18 @@ public class BookDetailActivity extends BaseActivity implements
|
||||
public void run() {
|
||||
// TODO
|
||||
// CanDownYK();
|
||||
// 文件保存到应用私有目录(getExternalFilesDir),Android 13+ 不需要存储权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
boolean needsPermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU;
|
||||
boolean hasPermission = true;
|
||||
|
||||
if (PermissionsUtil.hasPermission(BookDetailActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
if (needsPermission) {
|
||||
// Android 12及以下需要存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(BookDetailActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
// Android 13+ 保存到应用私有目录不需要权限
|
||||
|
||||
if (hasPermission) {
|
||||
CanDownWF();
|
||||
} else {
|
||||
EasyWindow.with(BookDetailActivity.this).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
|
||||
@@ -700,7 +709,7 @@ public class BookDetailActivity extends BaseActivity implements
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户拒绝了访问读写的申请
|
||||
//用户拒绝了访问存储的申请
|
||||
//
|
||||
}
|
||||
|
||||
@@ -841,8 +850,18 @@ public class BookDetailActivity extends BaseActivity implements
|
||||
if (result.contains("Waiting")) {
|
||||
ToastUtil.showMessage("暂无全文");
|
||||
} else {
|
||||
// 文件保存到应用私有目录(getExternalFilesDir),Android 13+ 不需要存储权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(BookDetailActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
boolean needsPermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU;
|
||||
boolean hasPermission = true;
|
||||
|
||||
if (needsPermission) {
|
||||
// Android 12及以下需要存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(BookDetailActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
// Android 13+ 保存到应用私有目录不需要权限
|
||||
|
||||
if (hasPermission) {
|
||||
downloadBook(urls);
|
||||
} else {
|
||||
PermissionsUtil.requestPermission(BookDetailActivity.this, new PermissionListener() {
|
||||
|
||||
@@ -11,6 +11,7 @@ import android.widget.FrameLayout;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -29,6 +30,7 @@ import cn.shangyu.gdxzExpert.pulltorefreshview.PullToRefreshListView;
|
||||
import cn.shangyu.gdxzExpert.utils.CommonUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.GsonTools;
|
||||
import cn.shangyu.gdxzExpert.utils.LogUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.MyUserIconUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.SharePrefUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.StringUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.ToastUtil;
|
||||
@@ -116,13 +118,18 @@ public class CoollectCourseActivity extends BaseActivity implements
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
|
||||
// TODO Auto-generated method stub
|
||||
Intent intent = new Intent(mActivity, CourseUrlDetailActivity.class);
|
||||
intent.putExtra("url", DataList.get(arg2-1).path);
|
||||
Log.d("gdxzfile ","url1 "+DataList.get(arg2-1).path);
|
||||
intent.putExtra("uuid", DataList.get(arg2-1).other_uuid);
|
||||
intent.putExtra("title", DataList.get(arg2-1).title);
|
||||
intent.putExtra("collect", "collect");
|
||||
this.startActivityForResult(intent, 201);
|
||||
// Intent intent = new Intent(mActivity, CourseUrlDetailActivity.class);
|
||||
// intent.putExtra("url", DataList.get(arg2-1).path);
|
||||
// Log.d("gdxzfile ","url1 "+DataList.get(arg2-1).path);
|
||||
// intent.putExtra("uuid", DataList.get(arg2-1).other_uuid);
|
||||
// intent.putExtra("title", DataList.get(arg2-1).title);
|
||||
// intent.putExtra("collect", "collect");
|
||||
// this.startActivityForResult(intent, 201);
|
||||
com.alibaba.fastjson.JSONObject pageParams = new JSONObject();
|
||||
pageParams.put("src", DataList.get(arg2-1).path);
|
||||
pageParams.put("uuid", DataList.get(arg2-1).other_uuid);
|
||||
pageParams.put("from", "collect");
|
||||
MyUserIconUtil.showUniMp(mActivity, "/pages_app/pptDetail/pptDetail", pageParams);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -295,8 +295,18 @@ public class CourseDetailOrderActivity extends BaseActivity implements
|
||||
|
||||
}
|
||||
|
||||
// 文件保存到应用私有目录(getExternalFilesDir),Android 13+ 不需要存储权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(CourseDetailOrderActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
boolean needsPermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU;
|
||||
boolean hasPermission = true;
|
||||
|
||||
if (needsPermission) {
|
||||
// Android 12及以下需要存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(CourseDetailOrderActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
// Android 13+ 保存到应用私有目录不需要权限
|
||||
|
||||
if (hasPermission) {
|
||||
getDownLoadResult();
|
||||
} else {
|
||||
EasyWindow.with(CourseDetailOrderActivity.this).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
|
||||
|
||||
@@ -465,8 +465,21 @@ public class CtActivity extends BaseActivity implements AdapterView.OnItemClickL
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
if (PermissionsUtil.hasPermission(CtActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 拍照主要需要 CAMERA 权限
|
||||
hasPermission = PermissionsUtil.hasPermission(CtActivity.this, Manifest.permission.CAMERA);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
|
||||
} else {
|
||||
// Android 12及以下需要 CAMERA 和存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(CtActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问摄像头的权限
|
||||
takePhoto11();// 拍照获取
|
||||
} else {
|
||||
@@ -487,7 +500,7 @@ public class CtActivity extends BaseActivity implements AdapterView.OnItemClickL
|
||||
|
||||
}
|
||||
|
||||
}, new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
@@ -503,11 +516,17 @@ public class CtActivity extends BaseActivity implements AdapterView.OnItemClickL
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(CtActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有访问摄像头的权限,读写内存,网络定位,打电话,读取短信,录音,通讯录
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
|
||||
// Android 6.0 ~ 12 使用旧的存储权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
hasPermission = PermissionsUtil.hasPermission(CtActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问相册的权限
|
||||
Intent intent = new Intent(mActivity, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,
|
||||
@@ -520,7 +539,7 @@ public class CtActivity extends BaseActivity implements AdapterView.OnItemClickL
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
Intent intent = new Intent(CtActivity.this, PhotoAlbumActivity.class);
|
||||
Intent intent = new Intent(CtActivity.this, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
@@ -529,20 +548,14 @@ public class CtActivity extends BaseActivity implements AdapterView.OnItemClickL
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户拒绝了访问读写的申请
|
||||
//用户拒绝了访问相册的申请
|
||||
|
||||
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
Intent intent = new Intent(CtActivity.this, PhotoAlbumActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -421,8 +421,21 @@ public class FibroActivity extends BaseActivity implements AdapterView.OnItemCli
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
if (PermissionsUtil.hasPermission(FibroActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 拍照主要需要 CAMERA 权限
|
||||
hasPermission = PermissionsUtil.hasPermission(FibroActivity.this, Manifest.permission.CAMERA);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
|
||||
} else {
|
||||
// Android 12及以下需要 CAMERA 和存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(FibroActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问摄像头的权限
|
||||
takePhoto11();// 拍照获取
|
||||
} else {
|
||||
@@ -443,7 +456,7 @@ public class FibroActivity extends BaseActivity implements AdapterView.OnItemCli
|
||||
|
||||
}
|
||||
|
||||
}, new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
@@ -459,11 +472,17 @@ public class FibroActivity extends BaseActivity implements AdapterView.OnItemCli
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(FibroActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有访问摄像头的权限,读写内存,网络定位,打电话,读取短信,录音,通讯录
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
|
||||
// Android 6.0 ~ 12 使用存储权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
hasPermission = PermissionsUtil.hasPermission(FibroActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问相册的权限
|
||||
Intent intent = new Intent(mActivity, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,
|
||||
@@ -476,7 +495,7 @@ public class FibroActivity extends BaseActivity implements AdapterView.OnItemCli
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
Intent intent = new Intent(FibroActivity.this, PhotoAlbumActivity.class);
|
||||
Intent intent = new Intent(FibroActivity.this, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
@@ -485,20 +504,15 @@ public class FibroActivity extends BaseActivity implements AdapterView.OnItemCli
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户拒绝了访问读写的申请
|
||||
//用户拒绝了访问相册的申请
|
||||
|
||||
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
Intent intent = new Intent(FibroActivity.this, PhotoAlbumActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -45,8 +45,18 @@ public class FindHelpActivity extends BaseActivity {
|
||||
im_we.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
// 保存图片到 MediaStore,Android 13+ 可能需要权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(FindHelpActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
boolean needsPermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU;
|
||||
boolean hasPermission = true;
|
||||
|
||||
if (needsPermission) {
|
||||
// Android 12及以下需要存储权限(用于保存到 MediaStore)
|
||||
hasPermission = PermissionsUtil.hasPermission(FindHelpActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
// Android 13+ 保存到 MediaStore 可能需要 READ_MEDIA_IMAGES,但通常不需要
|
||||
|
||||
if (hasPermission) {
|
||||
savePhoto();
|
||||
}
|
||||
else
|
||||
|
||||
@@ -68,9 +68,22 @@ public class GandanMeetingActivity extends BaseActivity{
|
||||
// intent.putExtra("title",getResources().getString(R.string.gandanhuifang));
|
||||
// startActivity(intent);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
//
|
||||
if (PermissionsUtil.hasPermission(GandanMeetingActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有访问摄像头的权限,读写内存,网络定位,打电话,读取短信,录音,通讯录
|
||||
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 拍照主要需要 CAMERA 权限
|
||||
hasPermission = PermissionsUtil.hasPermission(GandanMeetingActivity.this, Manifest.permission.CAMERA);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
|
||||
} else {
|
||||
// Android 12及以下需要 CAMERA 和存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(GandanMeetingActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问摄像头的权限
|
||||
startToCapture();
|
||||
} else {
|
||||
EasyWindow.with(GandanMeetingActivity.this).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
|
||||
@@ -80,16 +93,16 @@ public class GandanMeetingActivity extends BaseActivity{
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户授予了访问读取短信的权限
|
||||
//用户授予了访问摄像头的权限
|
||||
startToCapture();
|
||||
}
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
//用户拒绝了访问读取短信的申请
|
||||
//用户拒绝了访问摄像头的申请
|
||||
EasyWindow.cancelAll();
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
|
||||
@@ -536,8 +536,21 @@ public class HbvdnaActivity extends BaseActivity implements AdapterView.OnItemCl
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
if (PermissionsUtil.hasPermission(HbvdnaActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 拍照主要需要 CAMERA 权限
|
||||
hasPermission = PermissionsUtil.hasPermission(HbvdnaActivity.this, Manifest.permission.CAMERA);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
|
||||
} else {
|
||||
// Android 12及以下需要 CAMERA 和存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(HbvdnaActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问摄像头的权限
|
||||
takePhoto11();// 拍照获取
|
||||
} else {
|
||||
@@ -558,7 +571,7 @@ public class HbvdnaActivity extends BaseActivity implements AdapterView.OnItemCl
|
||||
|
||||
}
|
||||
|
||||
}, new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
@@ -574,11 +587,17 @@ public class HbvdnaActivity extends BaseActivity implements AdapterView.OnItemCl
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(HbvdnaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有访问摄像头的权限,读写内存,网络定位,打电话,读取短信,录音,通讯录
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
|
||||
// Android 6.0 ~ 12 使用存储权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
hasPermission = PermissionsUtil.hasPermission(HbvdnaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问相册的权限
|
||||
Intent intent = new Intent(mActivity, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,
|
||||
@@ -591,7 +610,7 @@ public class HbvdnaActivity extends BaseActivity implements AdapterView.OnItemCl
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
Intent intent = new Intent(HbvdnaActivity.this, PhotoAlbumActivity.class);
|
||||
Intent intent = new Intent(HbvdnaActivity.this, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
@@ -600,20 +619,15 @@ public class HbvdnaActivity extends BaseActivity implements AdapterView.OnItemCl
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户拒绝了访问读写的申请
|
||||
//用户拒绝了访问相册的申请
|
||||
|
||||
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
Intent intent = new Intent(HbvdnaActivity.this, PhotoAlbumActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -738,8 +738,21 @@ public class InfomationActivity extends BaseActivity implements AdapterView.OnIt
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
if (PermissionsUtil.hasPermission(InfomationActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 拍照主要需要 CAMERA 权限
|
||||
hasPermission = PermissionsUtil.hasPermission(InfomationActivity.this, Manifest.permission.CAMERA);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
|
||||
} else {
|
||||
// Android 12及以下需要 CAMERA 和存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(InfomationActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问摄像头的权限
|
||||
takePhoto11();// 拍照获取
|
||||
} else {
|
||||
@@ -760,7 +773,7 @@ public class InfomationActivity extends BaseActivity implements AdapterView.OnIt
|
||||
|
||||
}
|
||||
|
||||
}, new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
@@ -776,11 +789,18 @@ public class InfomationActivity extends BaseActivity implements AdapterView.OnIt
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(InfomationActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有访问摄像头的权限,读写内存,网络定位,打电话,读取短信,录音,通讯录
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
|
||||
|
||||
// Android 6.0 ~ 12 使用存储权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
hasPermission = PermissionsUtil.hasPermission(InfomationActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问相册的权限
|
||||
Intent intent = new Intent(mActivity, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,
|
||||
@@ -793,7 +813,7 @@ public class InfomationActivity extends BaseActivity implements AdapterView.OnIt
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
Intent intent = new Intent(InfomationActivity.this, PhotoAlbumActivity.class);
|
||||
Intent intent = new Intent(InfomationActivity.this, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
@@ -802,20 +822,15 @@ public class InfomationActivity extends BaseActivity implements AdapterView.OnIt
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户拒绝了访问读写的申请
|
||||
//用户拒绝了访问相册的申请
|
||||
|
||||
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
Intent intent = new Intent(InfomationActivity.this, PhotoAlbumActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",9);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@ import static cn.shangyu.gdxzExpert.utils.Url.getAccessToken;
|
||||
import static cn.shangyu.gdxzExpert.utils.Url.getShowMagazine;
|
||||
import static cn.shangyu.gdxzExpert.utils.Url.scanurl;
|
||||
import static cn.shangyu.gdxzExpert.utils.Url.umVerifyLogin;
|
||||
import static cn.shangyu.gdxzExpert.utils.Url.url_path;
|
||||
import static cn.shangyu.gdxzExpert.utils.Url.urlmyLan;
|
||||
import static cn.shangyu.gdxzExpert.utils.Url.yxrefresh;
|
||||
import static cn.shangyu.gdxzExpert.utils.Url.yxregist;
|
||||
|
||||
@@ -176,6 +178,7 @@ import cn.shangyu.gdxzExpert.netease.DemoCache;
|
||||
import cn.shangyu.gdxzExpert.netease.bagder.Badger;
|
||||
import cn.shangyu.gdxzExpert.netease.config.preference.Preferences;
|
||||
import cn.shangyu.gdxzExpert.netease.config.preference.UserPreferences;
|
||||
import cn.shangyu.gdxzExpert.pointsmall.BuyIntegerActivty;
|
||||
import cn.shangyu.gdxzExpert.service.UpdateService;
|
||||
import cn.shangyu.gdxzExpert.splash.UniappSplashView;
|
||||
import cn.shangyu.gdxzExpert.ui.CustomProgressDialog;
|
||||
@@ -187,6 +190,7 @@ import cn.shangyu.gdxzExpert.utils.DataCleanManager;
|
||||
import cn.shangyu.gdxzExpert.utils.GrayManager;
|
||||
import cn.shangyu.gdxzExpert.utils.HmacSha256ApiVerify;
|
||||
import cn.shangyu.gdxzExpert.utils.LogUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.MyUserIconUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.SharePrefUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.StaUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.StreamTool;
|
||||
@@ -199,10 +203,8 @@ import cn.shangyu.gdxzExpert.view.viewbadger.BadgeView;
|
||||
import cn.shangyu.gdxzExpert.widget.ECAlertDialog;
|
||||
import cn.shangyu.gdxzExpert.widget.LoadingPage.ResultState;
|
||||
import io.dcloud.feature.sdk.DCUniMPSDK;
|
||||
import io.dcloud.feature.sdk.Interface.IOnUniMPEventCallBack;
|
||||
import io.dcloud.feature.sdk.Interface.IUniMP;
|
||||
import io.dcloud.feature.sdk.Interface.IUniMPOnCloseCallBack;
|
||||
import io.dcloud.feature.unimp.DCUniMPJSCallback;
|
||||
import io.dcloud.feature.unimp.config.UniMPOpenConfiguration;
|
||||
import me.leolin.shortcutbadger.ShortcutBadger;
|
||||
import me.majiajie.pagerbottomtabstrip.NavigationController;
|
||||
@@ -273,9 +275,6 @@ public class MainActivity extends BaseActivity implements
|
||||
|
||||
private static Handler handler;
|
||||
|
||||
//自动触发打开 uniapp mp 开关
|
||||
private boolean auto_show_unimp = true;
|
||||
|
||||
// 全屏Loading覆盖层
|
||||
private View fullScreenLoadingView;
|
||||
|
||||
@@ -469,7 +468,9 @@ public class MainActivity extends BaseActivity implements
|
||||
tab_rbn_published.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
startActivity(new Intent(ct,PatientVideoActivity.class));
|
||||
|
||||
MyUserIconUtil.showUniMp(MainActivity.this, "/pages_app/patientVideo/patientVideo", null);
|
||||
// startActivity(new Intent(ct,PatientVideoActivity.class));
|
||||
}
|
||||
});
|
||||
main_radiogroup.setOnCheckedChangeListener(this);
|
||||
@@ -485,242 +486,6 @@ public class MainActivity extends BaseActivity implements
|
||||
} else {
|
||||
changeHome();
|
||||
}
|
||||
|
||||
|
||||
DCUniMPSDK.getInstance().setUniMPOnCloseCallBack(new IUniMPOnCloseCallBack() {
|
||||
@Override
|
||||
public void onClose(String appid) {
|
||||
auto_show_unimp = false;
|
||||
LogUtil.i("setUniMPOnCloseCallBack: ", appid);
|
||||
if(BaseApplication.getUniMPCaches().containsKey(appid)){
|
||||
BaseApplication.getUniMPCaches().remove(appid);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
DCUniMPSDK.getInstance().setOnUniMPEventCallBack(new IOnUniMPEventCallBack() {
|
||||
@Override
|
||||
public void onUniMPEventReceive(String appid, String event, Object data, DCUniMPJSCallback callback) {
|
||||
|
||||
|
||||
LogUtil.i("onUniMPEventReceive appid="+appid);
|
||||
LogUtil.i("onUniMPEventReceive event="+event);
|
||||
LogUtil.i("onUniMPEventReceive data="+data);
|
||||
|
||||
try {
|
||||
if(event.equals("goTabbarPage")){
|
||||
|
||||
auto_show_unimp = false;
|
||||
// BaseApplication.getUniMPCaches().get(appid).hideUniMP();
|
||||
// BaseApplication.getUniMPCaches().get(appid).showUniMP();
|
||||
// BaseApplication.getUniMPCaches().get(appid).closeUniMP();
|
||||
// data 可能是 JSONObject 或 String,需要判断类型
|
||||
String msg = null;
|
||||
if (data instanceof com.alibaba.fastjson.JSONObject) {
|
||||
// 如果是 fastjson 的 JSONObject,直接使用
|
||||
com.alibaba.fastjson.JSONObject fastJsonObj = (com.alibaba.fastjson.JSONObject) data;
|
||||
msg = fastJsonObj.getString("msg");
|
||||
} else if (data instanceof String) {
|
||||
// 如果是 String,解析为 JSONObject
|
||||
JSONObject jsonObject = new JSONObject((String) data);
|
||||
msg = jsonObject.getString("msg");
|
||||
} else {
|
||||
// 尝试转换为字符串再解析
|
||||
JSONObject jsonObject = new JSONObject(data.toString());
|
||||
msg = jsonObject.getString("msg");
|
||||
}
|
||||
LogUtil.i("goTabbarPage msg=" + msg);
|
||||
if(msg.equals("home")){//首页
|
||||
LogUtil.i("准备切换到首页");
|
||||
// 使用主线程 Handler 确保在主线程执行
|
||||
new Handler(Looper.getMainLooper()).post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
LogUtil.i("开始执行首页切换逻辑");
|
||||
if (main_radiogroup == null) {
|
||||
LogUtil.e("main_radiogroup is null!");
|
||||
return;
|
||||
}
|
||||
// 直接执行首页切换逻辑,不依赖事件触发
|
||||
main_radiogroup.setOnCheckedChangeListener(null);
|
||||
main_radiogroup.check(R.id.tab_rbn_home);
|
||||
main_radiogroup.setOnCheckedChangeListener(MainActivity.this);
|
||||
|
||||
// 执行首页相关的UI更新和逻辑
|
||||
if (mToolbar != null) {
|
||||
mToolbar.setBackgroundColor(getResources().getColor(R.color.top_bg));
|
||||
}
|
||||
if (mRg_kepu != null) {
|
||||
mRg_kepu.setVisibility(View.GONE);
|
||||
}
|
||||
if (mV_kp != null) {
|
||||
mV_kp.setVisibility(View.GONE);
|
||||
}
|
||||
MobclickAgent.onEvent(MainActivity.this, EXPERT_TAB_HOME);
|
||||
changeHome();
|
||||
LogUtil.i("首页切换逻辑执行完成");
|
||||
} catch (Exception e) {
|
||||
LogUtil.e("执行首页切换时出错: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}else if(msg.equals("patientClass")){//患教
|
||||
LogUtil.i("准备切换到患教页");
|
||||
// 使用主线程 Handler 确保在主线程执行
|
||||
new Handler(Looper.getMainLooper()).post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
LogUtil.i("开始执行患教页切换逻辑");
|
||||
if (main_radiogroup == null) {
|
||||
LogUtil.e("main_radiogroup is null!");
|
||||
return;
|
||||
}
|
||||
// 直接执行患教页切换逻辑,不依赖事件触发
|
||||
main_radiogroup.setOnCheckedChangeListener(null);
|
||||
main_radiogroup.check(R.id.tab_rbn_kepu);
|
||||
main_radiogroup.setOnCheckedChangeListener(MainActivity.this);
|
||||
|
||||
// 执行患教页相关的UI更新和逻辑
|
||||
mToolbar.setBackgroundColor(getResources().getColor(R.color.top_bg));
|
||||
mToolbar.getBackground().setAlpha(255);
|
||||
mRg_kepu.setVisibility(View.VISIBLE);
|
||||
mV_kp.setVisibility(View.VISIBLE);
|
||||
mRb_published.setChecked(true);
|
||||
top_sgin.setVisibility(View.GONE);
|
||||
MobclickAgent.onEvent(MainActivity.this, EXPERT_TAB_TEACH);
|
||||
changePatientZhongxin();
|
||||
LogUtil.i("患教页切换逻辑执行完成");
|
||||
} catch (Exception e) {
|
||||
LogUtil.e("执行患教页切换时出错: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}else if(msg.equals("education")){//继续教育
|
||||
LogUtil.i("准备切换到继续教育页");
|
||||
// 使用主线程 Handler 确保在主线程执行
|
||||
new Handler(Looper.getMainLooper()).post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
LogUtil.i("开始执行继续教育页切换逻辑");
|
||||
if (main_radiogroup == null) {
|
||||
LogUtil.e("main_radiogroup is null!");
|
||||
return;
|
||||
}
|
||||
// 直接执行继续教育页切换逻辑,不依赖事件触发
|
||||
main_radiogroup.setOnCheckedChangeListener(null);
|
||||
main_radiogroup.check(R.id.tab_rbn_news);
|
||||
main_radiogroup.setOnCheckedChangeListener(MainActivity.this);
|
||||
|
||||
// 执行继续教育页相关的UI更新和逻辑
|
||||
mToolbar.setBackgroundColor(getResources().getColor(R.color.top_bg));
|
||||
mRg_kepu.setVisibility(View.GONE);
|
||||
mV_kp.setVisibility(View.GONE);
|
||||
top_sgin.setVisibility(View.GONE);
|
||||
mToolbar.getBackground().setAlpha(255);
|
||||
MobclickAgent.onEvent(MainActivity.this, EXPERT_TAB_EDUCATION);
|
||||
changeNews();
|
||||
LogUtil.i("继续教育页切换逻辑执行完成");
|
||||
} catch (Exception e) {
|
||||
LogUtil.e("执行继续教育页切换时出错: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}else if(msg.equals("mine")){//我的
|
||||
LogUtil.i("准备切换到我的页");
|
||||
// 使用主线程 Handler 确保在主线程执行
|
||||
new Handler(Looper.getMainLooper()).post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
LogUtil.i("开始执行我的页切换逻辑");
|
||||
if (main_radiogroup == null) {
|
||||
LogUtil.e("main_radiogroup is null!");
|
||||
return;
|
||||
}
|
||||
// 直接执行我的页切换逻辑,不依赖事件触发
|
||||
main_radiogroup.setOnCheckedChangeListener(null);
|
||||
main_radiogroup.check(R.id.tab_rbn_my);
|
||||
main_radiogroup.setOnCheckedChangeListener(MainActivity.this);
|
||||
|
||||
// 执行我的页相关的UI更新和逻辑
|
||||
mToolbar.setBackgroundColor(getResources().getColor(R.color.top_bg));
|
||||
mToolbar.getBackground().setAlpha(255);
|
||||
top_sgin.setVisibility(View.GONE);
|
||||
mRg_kepu.setVisibility(View.GONE);
|
||||
mV_kp.setVisibility(View.GONE);
|
||||
MobclickAgent.onEvent(MainActivity.this, EXPERT_TAB_MY);
|
||||
changeMy();
|
||||
LogUtil.i("我的页切换逻辑执行完成");
|
||||
} catch (Exception e) {
|
||||
LogUtil.e("执行我的页切换时出错: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
|
||||
}
|
||||
} else if (event.equals("getScanCodeAuth")){
|
||||
JSONObject ScanCodeAuthData = new JSONObject();
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(MainActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有访问摄像头的权限,读写内存,网络定位,打电话,读取短信,录音,通讯录
|
||||
ScanCodeAuthData.put("code", 200);
|
||||
callback.invoke(ScanCodeAuthData);//给uniapp 回传消息
|
||||
} else {
|
||||
EasyWindow.with(MainActivity.this).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000).setContentView(R.layout.float_top_dialog).show();
|
||||
PermissionsUtil.requestPermission(MainActivity.this, new PermissionListener() {
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户授予了访问读取短信的权限
|
||||
try {
|
||||
ScanCodeAuthData.put("code", 200);
|
||||
} catch (JSONException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
callback.invoke(ScanCodeAuthData);//给uniapp 回传消息
|
||||
}
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
//用户拒绝了访问读取短信的申请
|
||||
EasyWindow.cancelAll();
|
||||
try {
|
||||
ScanCodeAuthData.put("code", 0);
|
||||
} catch (JSONException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
callback.invoke(ScanCodeAuthData);//给uniapp 回传消息
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}
|
||||
}else {
|
||||
ScanCodeAuthData.put("code", 0);
|
||||
callback.invoke(ScanCodeAuthData);//给uniapp 回传消息
|
||||
}
|
||||
}else if(event.equals("checkToken")){
|
||||
JSONObject checkToken = new JSONObject();
|
||||
checkToken.put("code", 200);
|
||||
String access_token = SharePrefUtil.getString(MainActivity.this, "access_token", "");
|
||||
if(StringUtil.isEmpty(access_token)){
|
||||
checkToken.put("code", 0);
|
||||
}
|
||||
callback.invoke(checkToken);//给uniapp 回传消息
|
||||
}
|
||||
}catch (Exception e){
|
||||
LogUtil.e("处理uniapp事件时出错: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return view;
|
||||
}
|
||||
private OldPageNavigationView tab;
|
||||
@@ -822,6 +587,11 @@ public class MainActivity extends BaseActivity implements
|
||||
sendJsonPostParamtoNetSignMD5(getShowMagazine,param,666,this);
|
||||
}
|
||||
|
||||
private void getAccessToken(){
|
||||
Map<String, String> param = new HashMap<>();
|
||||
sendJsonPostParamtoNetSignMD5(getAccessToken, param, ACCESS_TOKEN,this);
|
||||
}
|
||||
|
||||
private void registerSystemObserver(boolean register) {
|
||||
NIMClient.getService(MsgServiceObserve.class).observeCustomNotification(
|
||||
customNotificationObserver, register);
|
||||
@@ -1096,12 +866,7 @@ public class MainActivity extends BaseActivity implements
|
||||
sendJsonPostParamtoNetSignMD5(Url.getIsAccount,map,GETISACCOUNT,this);
|
||||
sendJsonPostParamtoNetSignMD5(Url.getGray,map,222,this);
|
||||
sendJsonPostParamtoNetSignMD5(Url.checkUser,map,333,this);
|
||||
|
||||
String access_token = SharePrefUtil.getString(MainActivity.this, "access_token", "");
|
||||
if(StringUtil.isEmpty(access_token)){
|
||||
Map<String, String> param = new HashMap<>();
|
||||
sendJsonPostParamtoNetSignMD5(getAccessToken, param, ACCESS_TOKEN,this);
|
||||
}
|
||||
// sendJsonPostParamtoNetSignMD5(getAccessToken, param, ACCESS_TOKEN,this);
|
||||
}
|
||||
|
||||
private void getGray() {
|
||||
@@ -1414,7 +1179,8 @@ public class MainActivity extends BaseActivity implements
|
||||
|
||||
public void onCheckedChanged(RadioGroup group, int checkedId) {
|
||||
|
||||
auto_show_unimp = true;
|
||||
BaseApplication.auto_show_unimp = true;
|
||||
|
||||
/** 改变文字的颜色 */
|
||||
if (badgeSysMsg != null) {
|
||||
badgeSysMsg.hide();
|
||||
@@ -1587,6 +1353,7 @@ public class MainActivity extends BaseActivity implements
|
||||
|
||||
showUniMp(true);
|
||||
|
||||
|
||||
} else if (checkedId == R.id.tab_rbn_my) {
|
||||
mToolbar.setBackgroundColor(getResources().getColor(R.color.top_bg));
|
||||
mToolbar.getBackground().setAlpha(255);
|
||||
@@ -1615,10 +1382,8 @@ public class MainActivity extends BaseActivity implements
|
||||
// iv_yindao1.setBackgroundResource(R.drawable.yindao3);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
||||
current_tab_id = checkedId;
|
||||
|
||||
}
|
||||
|
||||
OnCheckedChangeListener mKPCheckListener = new OnCheckedChangeListener() {
|
||||
@@ -1638,7 +1403,7 @@ public class MainActivity extends BaseActivity implements
|
||||
};
|
||||
|
||||
//展示uniapp mp
|
||||
private void showUniMp(boolean showLoading){
|
||||
public void showUniMp(boolean showLoading){
|
||||
if(showLoading){
|
||||
showFullScreenLoading();
|
||||
}
|
||||
@@ -1652,25 +1417,9 @@ public class MainActivity extends BaseActivity implements
|
||||
if(StringUtil.isEmpty(access_token)){
|
||||
Map<String, String> param = new HashMap<>();
|
||||
sendJsonPostParamtoNetSignMD5(getAccessToken, param, ACCESS_TOKEN,this);
|
||||
access_token = SharePrefUtil.getString(MainActivity.this, "access_token", "");
|
||||
}
|
||||
|
||||
JSONObject userInfo = new JSONObject();
|
||||
userInfo.put("uuid", SharePrefUtil.getString(MainActivity.this, Constant.uuid, ""));
|
||||
userInfo.put("realName", SharePrefUtil.getString(MainActivity.this, Constant.realName, ""));
|
||||
userInfo.put("mobile", SharePrefUtil.getString(MainActivity.this, "mobile", ""));
|
||||
userInfo.put("photo", SharePrefUtil.getString(MainActivity.this, Constant.photo, ""));
|
||||
|
||||
UniMPOpenConfiguration uniMPOpenConfiguration = new UniMPOpenConfiguration();
|
||||
uniMPOpenConfiguration.splashClass = UniappSplashView.class;
|
||||
// uniMPOpenConfiguration.path= "pages/live/live";
|
||||
uniMPOpenConfiguration.extraData.put("darkmode", "light");
|
||||
uniMPOpenConfiguration.extraData.put("token", access_token);
|
||||
uniMPOpenConfiguration.extraData.put("userInfo", userInfo);
|
||||
uniMPOpenConfiguration.extraData.put("targetPath", "/pages/live/live");
|
||||
IUniMP uniapp_MP = DCUniMPSDK.getInstance().openUniMP(mContext, uniapp_mp_appid, uniMPOpenConfiguration);
|
||||
BaseApplication.getUniMPCaches().put(uniapp_MP.getAppid(), uniapp_MP);
|
||||
|
||||
MyUserIconUtil.showUniMp(MainActivity.this, "/pages/live/live", null);
|
||||
if(showLoading) {
|
||||
hideFullScreenLoading();
|
||||
}
|
||||
@@ -1755,9 +1504,22 @@ public class MainActivity extends BaseActivity implements
|
||||
// intent.putExtra("title",getResources().getString(R.string.gandanhuifang));
|
||||
// startActivity(intent);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
//
|
||||
if (PermissionsUtil.hasPermission(MainActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有访问摄像头的权限,读写内存,网络定位,打电话,读取短信,录音,通讯录
|
||||
// 扫码功能主要需要 CAMERA 权限,Android 13+ 不需要存储权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 只需要 CAMERA 权限
|
||||
hasPermission = PermissionsUtil.hasPermission(MainActivity.this, Manifest.permission.CAMERA);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
|
||||
} else {
|
||||
// Android 12及以下需要 CAMERA 和存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(MainActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问摄像头的权限
|
||||
startToCapture();
|
||||
} else {
|
||||
EasyWindow.with(MainActivity.this).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
|
||||
@@ -1767,16 +1529,16 @@ public class MainActivity extends BaseActivity implements
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户授予了访问读取短信的权限
|
||||
//用户授予了访问摄像头的权限
|
||||
startToCapture();
|
||||
}
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
//用户拒绝了访问读取短信的申请
|
||||
//用户拒绝了访问摄像头的申请
|
||||
EasyWindow.cancelAll();
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
@@ -2236,7 +1998,8 @@ public class MainActivity extends BaseActivity implements
|
||||
|
||||
// registerReceiver(internalReceiver, intentfilter);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 33) {
|
||||
// Android 13 (API 33) 及以上版本需要指定 RECEIVER_EXPORTED 或 RECEIVER_NOT_EXPORTED
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
registerReceiver(internalReceiver, intentfilter, Context.RECEIVER_NOT_EXPORTED);
|
||||
} else {
|
||||
registerReceiver(internalReceiver, intentfilter);
|
||||
@@ -2308,11 +2071,26 @@ public class MainActivity extends BaseActivity implements
|
||||
protected void onResume() {
|
||||
|
||||
LogUtil.i("onResume: ", current_tab_id+"");
|
||||
if(current_tab_id == R.id.tab_rbn_donation && auto_show_unimp){
|
||||
if(current_tab_id == R.id.tab_rbn_donation && BaseApplication.auto_show_unimp){
|
||||
long current_timestmp = System.currentTimeMillis();
|
||||
//防止无限循环打开
|
||||
if(current_timestmp - BaseApplication.auto_show_unimp_timestamp > 1.5 * 1000){
|
||||
BaseApplication.auto_show_unimp_timestamp = current_timestmp;
|
||||
showUniMp(true);
|
||||
}else{
|
||||
//触发错误次数
|
||||
BaseApplication.auto_show_unimp_error_times ++;
|
||||
//错误次数大于5,则关闭小程序
|
||||
if(BaseApplication.auto_show_unimp_error_times > 5){
|
||||
MyUserIconUtil.closeUniMP();
|
||||
BaseApplication.auto_show_unimp_error_times = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.onResume();
|
||||
ShowMagazine();
|
||||
getAccessToken();
|
||||
if(!needshowGuideView()&&order>0)
|
||||
{
|
||||
getGroup();
|
||||
@@ -2322,14 +2100,11 @@ public class MainActivity extends BaseActivity implements
|
||||
boolean fullExit = ECPreferences.getSharedPreferences().getBoolean(
|
||||
ECPreferenceSettings.SETTINGS_FULLY_EXIT.getId(), false);
|
||||
if (fullExit) {
|
||||
|
||||
|
||||
// 1登入系统 2退出系统 3专家客户端在手机前台运行 4.专家客户端在手机后台运行
|
||||
BaseActivity.foreBack(mMainActivity, 2);
|
||||
finish();
|
||||
android.os.Process.killProcess(android.os.Process.myPid());
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
String account = getAutoRegistAccount();
|
||||
@@ -2350,7 +2125,6 @@ public class MainActivity extends BaseActivity implements
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 统计未读消息
|
||||
@@ -2418,8 +2192,18 @@ public class MainActivity extends BaseActivity implements
|
||||
if (resultCode == RESULT_OK && requestCode == 10086){
|
||||
SharePrefUtil.saveString(MainActivity.this, "newVersion",
|
||||
newVewsion);
|
||||
// UpdateService 使用应用私有目录(getExternalFilesDir),Android 13+ 不需要存储权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
boolean needsPermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU;
|
||||
boolean hasPermission = true;
|
||||
|
||||
if (needsPermission) {
|
||||
// Android 12及以下需要存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
// Android 13+ 保存到应用私有目录不需要权限
|
||||
|
||||
if (hasPermission) {
|
||||
// 下载
|
||||
intent = new Intent(MainActivity.this, UpdateService.class);
|
||||
intent.putExtra("newVersion", newVewsion);
|
||||
@@ -2449,7 +2233,7 @@ public class MainActivity extends BaseActivity implements
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户拒绝了访问读写的申请
|
||||
//用户拒绝了访问存储的申请
|
||||
//
|
||||
}
|
||||
|
||||
@@ -2591,8 +2375,18 @@ public class MainActivity extends BaseActivity implements
|
||||
if (b){
|
||||
SharePrefUtil.saveString(MainActivity.this, "newVersion",
|
||||
newVersion);
|
||||
// UpdateService 使用应用私有目录(getExternalFilesDir),Android 13+ 不需要存储权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
boolean needsPermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU;
|
||||
boolean hasPermission = true;
|
||||
|
||||
if (needsPermission) {
|
||||
// Android 12及以下需要存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
// Android 13+ 保存到应用私有目录不需要权限
|
||||
|
||||
if (hasPermission) {
|
||||
// 下载
|
||||
intent = new Intent(MainActivity.this, UpdateService.class);
|
||||
intent.putExtra("newVersion", newVewsion);
|
||||
@@ -2656,8 +2450,18 @@ public class MainActivity extends BaseActivity implements
|
||||
}else {
|
||||
SharePrefUtil.saveString(MainActivity.this, "newVersion",
|
||||
newVersion);
|
||||
// UpdateService 使用应用私有目录(getExternalFilesDir),Android 13+ 不需要存储权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
boolean needsPermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU;
|
||||
boolean hasPermission = true;
|
||||
|
||||
if (needsPermission) {
|
||||
// Android 12及以下需要存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
// Android 13+ 保存到应用私有目录不需要权限
|
||||
|
||||
if (hasPermission) {
|
||||
// 下载
|
||||
intent = new Intent(MainActivity.this, UpdateService.class);
|
||||
intent.putExtra("newVersion", newVewsion);
|
||||
@@ -2864,6 +2668,7 @@ public class MainActivity extends BaseActivity implements
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCallBackFromThread(String resultJson, int resultCode) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
@@ -11,6 +11,7 @@ import cn.shangyu.gdxzExpert.R;
|
||||
import cn.shangyu.gdxzExpert.base.BaseActivity;
|
||||
import cn.shangyu.gdxzExpert.utils.CommonUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.Constant;
|
||||
import cn.shangyu.gdxzExpert.utils.MyUserIconUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.SharePrefUtil;
|
||||
import cn.shangyu.gdxzExpert.utils.UIUtils;
|
||||
import cn.shangyu.gdxzExpert.widget.LoadingPage.ResultState;
|
||||
@@ -112,14 +113,19 @@ public class MyDownLoadsActivity extends BaseActivity{
|
||||
mRl_1.setVisibility(View.VISIBLE);
|
||||
mRl_2.setVisibility(View.VISIBLE);
|
||||
mRl_3.setVisibility(View.VISIBLE);
|
||||
mRl_4.setVisibility(View.GONE);
|
||||
mRl_4.setVisibility(View.VISIBLE);
|
||||
mRl_5.setVisibility(View.VISIBLE);
|
||||
mV_line1.setVisibility(View.VISIBLE);
|
||||
mV_line2.setVisibility(View.VISIBLE);
|
||||
mV_line3.setVisibility(View.VISIBLE);
|
||||
mV_line4.setVisibility(View.VISIBLE);
|
||||
mV_line5.setVisibility(View.VISIBLE);
|
||||
|
||||
mTv_title1.setText("诊疗指南");
|
||||
mTv_title2.setText("期刊杂志");
|
||||
mTv_title3.setText("课件文档");
|
||||
mTv_title4.setText("诊疗指南(新)");
|
||||
mTv_title5.setText("课件文档(新)");
|
||||
if(SharePrefUtil.getBoolean(this, Constant.ShowMagazine,true))
|
||||
{
|
||||
}
|
||||
@@ -207,13 +213,15 @@ public class MyDownLoadsActivity extends BaseActivity{
|
||||
}
|
||||
} else if (id == R.id.rl_4) {
|
||||
if (isDownLoad) {
|
||||
|
||||
//跳到uniapp 的缓存页面
|
||||
MyUserIconUtil.showUniMp(MyDownLoadsActivity.this, "/pages_app/zhinanDownload/zhinanDownload", null);
|
||||
} else {
|
||||
startActivity(new Intent(mActivity, CoollectVideoActivity.class).putExtra("name",mTv_title4.getText().toString()));
|
||||
}
|
||||
} else if (id == R.id.rl_5) {
|
||||
if (isDownLoad) {
|
||||
|
||||
//跳到uniapp 的缓存页面
|
||||
MyUserIconUtil.showUniMp(MyDownLoadsActivity.this, "/pages_app/pptDownload/pptDownload", null);
|
||||
} else {
|
||||
startActivity(new Intent(mActivity, CoollectCourseActivity.class));
|
||||
}
|
||||
|
||||
@@ -632,8 +632,21 @@ public class MyIdeaActivity extends BaseActivity implements AdapterView.OnItemC
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
if (PermissionsUtil.hasPermission(MyIdeaActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 拍照主要需要 CAMERA 权限
|
||||
hasPermission = PermissionsUtil.hasPermission(MyIdeaActivity.this, Manifest.permission.CAMERA);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
|
||||
} else {
|
||||
// Android 12及以下需要 CAMERA 和存储权限
|
||||
hasPermission = PermissionsUtil.hasPermission(MyIdeaActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问摄像头的权限
|
||||
takePhoto11();// 拍照获取
|
||||
} else {
|
||||
@@ -655,7 +668,7 @@ public class MyIdeaActivity extends BaseActivity implements AdapterView.OnItemC
|
||||
isFirst = true;
|
||||
}
|
||||
|
||||
}, new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
@@ -671,11 +684,18 @@ public class MyIdeaActivity extends BaseActivity implements AdapterView.OnItemC
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (PermissionsUtil.hasPermission(MyIdeaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//有访问摄像头的权限,读写内存,网络定位,打电话,读取短信,录音,通讯录
|
||||
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
|
||||
|
||||
|
||||
// Android 6.0 ~ 12 继续使用存储权限
|
||||
boolean hasPermission;
|
||||
String[] permissionsToRequest;
|
||||
|
||||
hasPermission = PermissionsUtil.hasPermission(MyIdeaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToRequest = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
|
||||
if (hasPermission) {
|
||||
//有访问相册的权限
|
||||
Intent intent = new Intent(mActivity, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",6);
|
||||
startActivityForResult(intent,
|
||||
@@ -688,7 +708,7 @@ public class MyIdeaActivity extends BaseActivity implements AdapterView.OnItemC
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
Intent intent = new Intent(MyIdeaActivity.this, PhotoAlbumActivity.class);
|
||||
Intent intent = new Intent(MyIdeaActivity.this, AllPhotosActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",6);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
@@ -697,20 +717,14 @@ public class MyIdeaActivity extends BaseActivity implements AdapterView.OnItemC
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户拒绝了访问读写的申请
|
||||
//用户拒绝了访问相册的申请
|
||||
isFirst = true;
|
||||
//
|
||||
}
|
||||
|
||||
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
|
||||
}, permissionsToRequest);
|
||||
}
|
||||
|
||||
}else {
|
||||
Intent intent = new Intent(MyIdeaActivity.this, PhotoAlbumActivity.class);
|
||||
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
|
||||
intent.putExtra("maxphotonum",6);
|
||||
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -144,13 +144,19 @@ public class MyQrCodeActivity extends BaseActivity {
|
||||
btn_code.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// saveAsImg() 使用应用私有目录(getExternalFilesDir),Android 13+ 不需要存储权限
|
||||
// 但需要保存到 MediaStore,可能需要权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
boolean needsPermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU;
|
||||
boolean hasPermission = true;
|
||||
|
||||
if (PermissionsUtil.hasPermission(MyQrCodeActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
// WebView.HitTestResult result = ((WebView) web).getHitTestResult();
|
||||
// final String imgurl = result.getExtra();
|
||||
// new DownLoadUrlImage(web.getUrl(), getApplicationContext());
|
||||
// //有访问录音
|
||||
if (needsPermission) {
|
||||
// Android 12及以下需要存储权限(用于保存到 MediaStore)
|
||||
hasPermission = PermissionsUtil.hasPermission(MyQrCodeActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
// Android 13+ 保存到应用私有目录不需要权限,但保存到 MediaStore 可能需要 READ_MEDIA_IMAGES
|
||||
|
||||
if (hasPermission) {
|
||||
new Thread(){
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -172,7 +178,6 @@ public class MyQrCodeActivity extends BaseActivity {
|
||||
@Override
|
||||
public void permissionGranted(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户授予了访问录音的权限
|
||||
new Thread(){
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -190,7 +195,7 @@ public class MyQrCodeActivity extends BaseActivity {
|
||||
@Override
|
||||
public void permissionDenied(@NonNull String[] permissions) {
|
||||
EasyWindow.cancelAll();
|
||||
//用户拒绝了访问录音的申请
|
||||
//用户拒绝了访问存储的申请
|
||||
// finish();
|
||||
}
|
||||
|
||||
|
||||