[Modify]安卓13适配和谷歌充值页面加loading
This commit is contained in:
@@ -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"
|
||||||
|
@@ -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()
|
||||||
}
|
}
|
||||||
|
@@ -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)
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@@ -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")
|
||||||
|
@@ -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")
|
||||||
|
@@ -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(
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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
|
||||||
|
@@ -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>
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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();
|
||||||
|
Reference in New Issue
Block a user