[Modify]安卓13适配和谷歌充值页面加loading

This commit is contained in:
wushaocheng
2023-09-18 11:43:10 +08:00
parent 5c6657c538
commit f860c96887
15 changed files with 108 additions and 65 deletions

View File

@@ -51,8 +51,15 @@
tools:node="remove" /> tools:node="remove" />
<uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 如果需要实时音视频通话模块,下面的权限也是必须的。否则,可以不加 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 如果需要实时音视频通话模块,下面的权限也是必须的。否则,可以不加 -->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- SDK 权限申明, 第三方 APP 接入时,请将 com.netease.nim.demo 替换为自己的包名 --> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- SDK 权限申明, 第三方 APP 接入时,请将 com.netease.nim.demo 替换为自己的包名 -->
@@ -72,6 +79,7 @@
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" /> <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
<!-- AppsFlyer需要参考https://dev.appsflyer.com/hc/docs/install-android-sdk#setting-required-permissions --> <!-- AppsFlyer需要参考https://dev.appsflyer.com/hc/docs/install-android-sdk#setting-required-permissions -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID" /> <uses-permission android:name="com.google.android.gms.permission.AD_ID" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application <application
android:name=".application.XChatApplication" android:name=".application.XChatApplication"

View File

@@ -97,11 +97,11 @@ class RedPackageOpenDialog : BaseDialog<DialogRedPackageOpenBinding>() {
it.addListener(object : AnimatorListenerAdapter() { it.addListener(object : AnimatorListenerAdapter() {
var isCanceled = false var isCanceled = false
override fun onAnimationCancel(animation: Animator?) { override fun onAnimationCancel(animation: Animator) {
isCanceled = true isCanceled = true
} }
override fun onAnimationEnd(animation: Animator?) { override fun onAnimationEnd(animation: Animator) {
if (!isCanceled) { if (!isCanceled) {
openRedPackage() openRedPackage()
} }

View File

@@ -3,6 +3,7 @@ package com.yizhuan.erban.common.dialog
import android.Manifest import android.Manifest
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import android.text.TextUtils import android.text.TextUtils
@@ -73,16 +74,14 @@ class PhotoDialog : BaseDialogFragment<PhotoDialogBinding>(), EasyPermissions.Pe
private fun checkStoragePermission1() { private fun checkStoragePermission1() {
if (!EasyPermissions.hasPermissions( if (!EasyPermissions.hasPermissions(
XChatApplication.gContext, Manifest.permission.WRITE_EXTERNAL_STORAGE, XChatApplication.gContext, if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_EXTERNAL_STORAGE
) )
) { ) {
EasyPermissions.requestPermissions( EasyPermissions.requestPermissions(
this, this,
getString(R.string.permission_storage_rationale), getString(R.string.permission_storage_rationale),
PERMISSION_CODE_STORAGE_1, PERMISSION_CODE_STORAGE_1,
Manifest.permission.WRITE_EXTERNAL_STORAGE, if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_EXTERNAL_STORAGE
) )
} else { } else {
PhotoProviderNew.photoProvider(this, resultCode = REQUEST_CODE_OPEN_PHOTO_PROVIDER) PhotoProviderNew.photoProvider(this, resultCode = REQUEST_CODE_OPEN_PHOTO_PROVIDER)
@@ -90,7 +89,11 @@ class PhotoDialog : BaseDialogFragment<PhotoDialogBinding>(), EasyPermissions.Pe
} }
private fun checkCameraPermission() { private fun checkCameraPermission() {
if (!EasyPermissions.hasPermissions(XChatApplication.gContext, Manifest.permission.CAMERA)) { if (!EasyPermissions.hasPermissions(
XChatApplication.gContext,
Manifest.permission.CAMERA
)
) {
EasyPermissions.requestPermissions( EasyPermissions.requestPermissions(
this, this,
getString(R.string.permission_camera_rationale), getString(R.string.permission_camera_rationale),
@@ -104,16 +107,15 @@ class PhotoDialog : BaseDialogFragment<PhotoDialogBinding>(), EasyPermissions.Pe
private fun checkStoragePermission2() { private fun checkStoragePermission2() {
if (!EasyPermissions.hasPermissions( if (!EasyPermissions.hasPermissions(
XChatApplication.gContext, Manifest.permission.WRITE_EXTERNAL_STORAGE, XChatApplication.gContext, if (Build.VERSION.SDK_INT >= 33)
Manifest.permission.READ_EXTERNAL_STORAGE Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
) )
) { ) {
EasyPermissions.requestPermissions( EasyPermissions.requestPermissions(
this, this,
getString(R.string.permission_storage_rationale), getString(R.string.permission_storage_rationale),
PERMISSION_CODE_STORAGE_2, PERMISSION_CODE_STORAGE_2,
Manifest.permission.WRITE_EXTERNAL_STORAGE, if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_EXTERNAL_STORAGE
) )
} else { } else {
PhotoProviderNew.photoCamera(this, REQUEST_CODE_OPEN_CAMERA_PROVIDER) PhotoProviderNew.photoCamera(this, REQUEST_CODE_OPEN_CAMERA_PROVIDER)

View File

@@ -1,6 +1,12 @@
package com.yizhuan.erban.main.helper; package com.yizhuan.erban.main.helper;
import static android.Manifest.permission.POST_NOTIFICATIONS;
import android.app.Activity; import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import androidx.core.app.ActivityCompat;
import com.yizhuan.erban.R; import com.yizhuan.erban.R;
import com.yizhuan.erban.common.widget.dialog.DialogManager; import com.yizhuan.erban.common.widget.dialog.DialogManager;
@@ -35,23 +41,35 @@ public class NoticationsUiHelper {
private static final long CACHE_DISTANCE_TIME = 3 * TimeUtils.MILLIS_OF_A_DAY; private static final long CACHE_DISTANCE_TIME = 3 * TimeUtils.MILLIS_OF_A_DAY;
public static void handle(Activity activity, DialogManager dialogManager) { public static void handle(Activity activity, DialogManager dialogManager) {
if (NotificationsUtils.isNotificationEnabled(activity)) { if (Build.VERSION.SDK_INT >= 33) {
if (ActivityCompat.checkSelfPermission(activity, POST_NOTIFICATIONS) == PackageManager.PERMISSION_DENIED) {
if (!ActivityCompat.shouldShowRequestPermissionRationale(activity, POST_NOTIFICATIONS)) {
enableNotification(activity, dialogManager);
} else {
ActivityCompat.requestPermissions(activity, new String[]{POST_NOTIFICATIONS}, 100);
}
}
} else if (NotificationsUtils.isNotificationEnabled(activity)) {
return; return;
} }
enableNotification(activity, dialogManager);
}
private static void enableNotification(Activity activity, DialogManager dialogManager) {
Single.create(new SingleOnSubscribe<String>() { Single.create(new SingleOnSubscribe<String>() {
@Override @Override
public void subscribe(SingleEmitter<String> emitter) throws Exception { public void subscribe(SingleEmitter<String> emitter) throws Exception {
long lastDialogTime = (long) SharedPreferenceUtils long lastDialogTime = (long) SharedPreferenceUtils
.get(KEY_NOTICATIONS_DIALOG_TIME, 0L); .get(KEY_NOTICATIONS_DIALOG_TIME, 0L);
long currTime = System.currentTimeMillis(); long currTime = System.currentTimeMillis();
if (lastDialogTime == 0L || currTime - lastDialogTime >= CACHE_DISTANCE_TIME) { if (lastDialogTime == 0L || currTime - lastDialogTime >= CACHE_DISTANCE_TIME) {
//超过三天需要重新弹窗 //超过三天需要重新弹窗
emitter.onSuccess(""); emitter.onSuccess("");
return; return;
} }
emitter.onError(new Throwable("no need to show notications dialog")); emitter.onError(new Throwable("no need to show notications dialog"));
} }
}) })
.flatMap(new Function<String, SingleSource<String>>() { .flatMap(new Function<String, SingleSource<String>>() {
@Override @Override
public SingleSource<String> apply(String s) throws Exception { public SingleSource<String> apply(String s) throws Exception {

View File

@@ -1,6 +1,7 @@
package com.yizhuan.erban.ui.setting.bean package com.yizhuan.erban.ui.setting.bean
import android.Manifest import android.Manifest
import android.os.Build
import com.yizhuan.erban.R import com.yizhuan.erban.R
import com.yizhuan.xchat_android_core.utils.TextUtils import com.yizhuan.xchat_android_core.utils.TextUtils
import com.yizhuan.xchat_android_library.utils.ResUtil import com.yizhuan.xchat_android_library.utils.ResUtil
@@ -36,8 +37,7 @@ enum class PermissionEntity(
STORAGE( STORAGE(
ResUtil.getString(R.string.setting_bean_permissionentity_011), ResUtil.getString(R.string.setting_bean_permissionentity_012), R.drawable.icon_permission_storage, ResUtil.getString(R.string.setting_bean_permissionentity_011), ResUtil.getString(R.string.setting_bean_permissionentity_012), R.drawable.icon_permission_storage,
arrayOf( arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE, if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.WRITE_EXTERNAL_STORAGE
) )
); );

View File

@@ -6,6 +6,7 @@ import android.content.Intent
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Color import android.graphics.Color
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import android.text.TextUtils import android.text.TextUtils
@@ -435,16 +436,14 @@ class UserInfoModifyActivity : BaseViewBindingActivity<ActivityUserInfoModifyBin
private fun checkStoragePermission() { private fun checkStoragePermission() {
if (!EasyPermissions.hasPermissions( if (!EasyPermissions.hasPermissions(
this, this,
Manifest.permission.WRITE_EXTERNAL_STORAGE, if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_EXTERNAL_STORAGE
) )
) { ) {
EasyPermissions.requestPermissions( EasyPermissions.requestPermissions(
this, this,
getString(R.string.permission_storage_rationale), getString(R.string.permission_storage_rationale),
PERMISSION_CODE_STORAGE, PERMISSION_CODE_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE, if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_EXTERNAL_STORAGE
) )
} else { } else {
mUri = Uri.parse("file://${FileHelper.getRootCacheDir()?.path}/${getNowTime()}.jpg") mUri = Uri.parse("file://${FileHelper.getRootCacheDir()?.path}/${getNowTime()}.jpg")

View File

@@ -6,6 +6,7 @@ import android.app.Activity
import android.content.Intent import android.content.Intent
import android.graphics.Bitmap import android.graphics.Bitmap
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import android.view.View import android.view.View
@@ -20,7 +21,6 @@ import com.yalantis.ucrop.UCrop
import com.yizhuan.erban.R import com.yizhuan.erban.R
import com.yizhuan.erban.application.XChatApplication import com.yizhuan.erban.application.XChatApplication
import com.yizhuan.erban.base.TitleBar import com.yizhuan.erban.base.TitleBar
import com.yizhuan.xchat_android_library.common.file.FileHelper
import com.yizhuan.erban.common.util.BitmapUtil import com.yizhuan.erban.common.util.BitmapUtil
import com.yizhuan.erban.ui.user.adapter.UserModifyPhotosAdapter import com.yizhuan.erban.ui.user.adapter.UserModifyPhotosAdapter
import com.yizhuan.erban.ui.user.adapter.UserModifyPhotosAdapter.PhotoItemClickListener import com.yizhuan.erban.ui.user.adapter.UserModifyPhotosAdapter.PhotoItemClickListener
@@ -30,6 +30,7 @@ import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.user.bean.UserInfo import com.yizhuan.xchat_android_core.user.bean.UserInfo
import com.yizhuan.xchat_android_core.user.bean.UserPhoto import com.yizhuan.xchat_android_core.user.bean.UserPhoto
import com.yizhuan.xchat_android_core.utils.net.BeanObserver import com.yizhuan.xchat_android_core.utils.net.BeanObserver
import com.yizhuan.xchat_android_library.common.file.FileHelper
import com.yizhuan.xchat_android_library.common.photo.PhotoProviderNew import com.yizhuan.xchat_android_library.common.photo.PhotoProviderNew
import com.yizhuan.xchat_android_library.common.util.PhotoCompressCallback import com.yizhuan.xchat_android_library.common.util.PhotoCompressCallback
import com.yizhuan.xchat_android_library.common.util.PhotoCompressUtil import com.yizhuan.xchat_android_library.common.util.PhotoCompressUtil
@@ -219,16 +220,14 @@ class UserModifyPhotosActivity : TakePhotoActivity(), PhotoItemClickListener,
private fun checkStoragePermission() { private fun checkStoragePermission() {
if (!EasyPermissions.hasPermissions( if (!EasyPermissions.hasPermissions(
this, this,
Manifest.permission.WRITE_EXTERNAL_STORAGE, if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_EXTERNAL_STORAGE
) )
) { ) {
EasyPermissions.requestPermissions( EasyPermissions.requestPermissions(
this, this,
getString(R.string.permission_storage_rationale), getString(R.string.permission_storage_rationale),
PERMISSION_CODE_STORAGE, PERMISSION_CODE_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE, if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_EXTERNAL_STORAGE
) )
} else { } else {
mUri = Uri.parse("file://${FileHelper.getRootCacheDir()?.path}/${getNowTime()}.jpg") mUri = Uri.parse("file://${FileHelper.getRootCacheDir()?.path}/${getNowTime()}.jpg")

View File

@@ -4,6 +4,7 @@ package com.yizhuan.erban.community.publish.view;
import android.Manifest; import android.Manifest;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
@@ -619,16 +620,14 @@ public class PublishActivity extends BaseMvpActivity<IPublishView, PublishPresen
private void checkStoragePermission() { private void checkStoragePermission() {
if (!EasyPermissions.hasPermissions( if (!EasyPermissions.hasPermissions(
this, this,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_EXTERNAL_STORAGE
) )
) { ) {
EasyPermissions.requestPermissions( EasyPermissions.requestPermissions(
this, this,
getString(R.string.permission_storage_rationale), getString(R.string.permission_storage_rationale),
PERMISSION_CODE_STORAGE, PERMISSION_CODE_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_EXTERNAL_STORAGE
); );
} else { } else {
PhotoProvider.photoProvider( PhotoProvider.photoProvider(

View File

@@ -4,6 +4,7 @@ import android.Manifest;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
@@ -84,7 +85,7 @@ public class MusicListActivity extends BaseMvpActivity<IMusicListView, MusicList
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
page = getIntent().getIntExtra(KEY_PAGE, page); page = getIntent().getIntExtra(KEY_PAGE, page);
viewPager.setCurrentItem(page); viewPager.setCurrentItem(page);
checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE) checkPermission(Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_AUDIO : Manifest.permission.READ_EXTERNAL_STORAGE)
.compose(bindToLifecycle()) .compose(bindToLifecycle())
.subscribe(aBoolean -> { .subscribe(aBoolean -> {
if (!aBoolean) { if (!aBoolean) {

View File

@@ -25,9 +25,9 @@ only_arm64=false
channel_file=channel.txt channel_file=channel.txt
CRASHLYTICS_COLLECTION_ENABLED=false CRASHLYTICS_COLLECTION_ENABLED=false
COMPILE_SDK_VERSION=32 COMPILE_SDK_VERSION=33
MIN_SDK_VERSION=21 MIN_SDK_VERSION=21
TARGET_SDK_VERSION=32 TARGET_SDK_VERSION=33
version_name=1.10.4 version_name=1.10.4
version_code=1004 version_code=1004

View File

@@ -3,8 +3,13 @@
xmlns:android="http://schemas.android.com/apk/res/android"> xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <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" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32"
tools:ignore="ScopedStorage" /> tools:ignore="ScopedStorage" />
<application> <application>

View File

@@ -7,6 +7,7 @@ import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.text.TextUtils; import android.text.TextUtils;
@@ -60,7 +61,7 @@ public class AlbumModel {
public void query(Context context, final CallBack callBack) { public void query(Context context, final CallBack callBack) {
final Context appCxt = context.getApplicationContext(); final Context appCxt = context.getApplicationContext();
if (PermissionChecker.checkSelfPermission(context, if (PermissionChecker.checkSelfPermission(context,
Manifest.permission.READ_EXTERNAL_STORAGE) != PermissionChecker.PERMISSION_GRANTED) { Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE) != PermissionChecker.PERMISSION_GRANTED) {
if (null != callBack) callBack.onAlbumWorkedCallBack(); if (null != callBack) callBack.onAlbumWorkedCallBack();
return; return;
} }

View File

@@ -210,11 +210,9 @@ public class EasyPhotosActivity extends AppCompatActivity implements AlbumItemsA
protected String[] getNeedPermissions() { protected String[] getNeedPermissions() {
if (Setting.isShowCamera) { if (Setting.isShowCamera) {
return new String[]{Manifest.permission.CAMERA, return new String[]{Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE};
Manifest.permission.READ_EXTERNAL_STORAGE};
} else { } else {
return new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, return new String[]{Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE};
Manifest.permission.READ_EXTERNAL_STORAGE};
} }
} }
@@ -499,6 +497,7 @@ public class EasyPhotosActivity extends AppCompatActivity implements AlbumItemsA
shouldShowMenuDone(); shouldShowMenuDone();
} }
@SuppressLint("Range")
private Photo getPhoto(Uri uri) { private Photo getPhoto(Uri uri) {
Photo p = null; Photo p = null;
String path; String path;
@@ -625,12 +624,17 @@ public class EasyPhotosActivity extends AppCompatActivity implements AlbumItemsA
} }
} }
final Photo photo = new Photo(mTempImageFile.getName(), uri, final Photo photo;
mTempImageFile.getAbsolutePath(), try {
mTempImageFile.lastModified() / 1000, width, height, orientation, photo = new Photo(mTempImageFile.getName(), uri,
mTempImageFile.length(), mTempImageFile.getAbsolutePath(),
DurationUtils.getDuration(mTempImageFile.getAbsolutePath()), mTempImageFile.lastModified() / 1000, width, height, orientation,
options.outMimeType); mTempImageFile.length(),
DurationUtils.getDuration(mTempImageFile.getAbsolutePath()),
options.outMimeType);
} catch (IOException e) {
throw new RuntimeException(e);
}
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override

View File

@@ -7,6 +7,7 @@ import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
@@ -459,10 +460,15 @@ public class PuzzleActivity extends AppCompatActivity implements View.OnClickLis
public void onSuccess(File file) { public void onSuccess(File file) {
Intent intent = new Intent(); Intent intent = new Intent();
Photo photo = new Photo(file.getName(), UriUtils.getUri(PuzzleActivity.this, Photo photo = null;
file), file.getAbsolutePath(), file.lastModified() / 1000, try {
puzzleView.getWidth(), puzzleView.getHeight(), 0, file.length(), photo = new Photo(file.getName(), UriUtils.getUri(PuzzleActivity.this,
DurationUtils.getDuration(file.getAbsolutePath()), "image/png"); file), file.getAbsolutePath(), file.lastModified() / 1000,
puzzleView.getWidth(), puzzleView.getHeight(), 0, file.length(),
DurationUtils.getDuration(file.getAbsolutePath()), "image/png");
} catch (IOException e) {
throw new RuntimeException(e);
}
intent.putExtra(EasyPhotos.RESULT_PHOTOS, photo); intent.putExtra(EasyPhotos.RESULT_PHOTOS, photo);
setResult(RESULT_OK, intent); setResult(RESULT_OK, intent);
PuzzleActivity.this.finish(); PuzzleActivity.this.finish();
@@ -576,8 +582,7 @@ public class PuzzleActivity extends AppCompatActivity implements View.OnClickLis
protected String[] getNeedPermissions() { protected String[] getNeedPermissions() {
return new String[]{Manifest.permission.CAMERA, return new String[]{Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE};
Manifest.permission.READ_EXTERNAL_STORAGE};
} }
@Override @Override

View File

@@ -3,6 +3,8 @@ package com.yizhuan.xchat_android_library.easyphoto.utils.media;
import android.media.MediaMetadataRetriever; import android.media.MediaMetadataRetriever;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import java.io.IOException;
/** /**
* DurationUtils * DurationUtils
* Create By lishilin On 2019/3/25 * Create By lishilin On 2019/3/25
@@ -15,7 +17,7 @@ public class DurationUtils {
* @param path path * @param path path
* @return duration * @return duration
*/ */
public static long getDuration(String path) { public static long getDuration(String path) throws IOException {
MediaMetadataRetriever mmr = null; MediaMetadataRetriever mmr = null;
try { try {
mmr = new MediaMetadataRetriever(); mmr = new MediaMetadataRetriever();