[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" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_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"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 如果需要实时音视频通话模块,下面的权限也是必须的。否则,可以不加 -->
<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" />
<!-- 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="android.permission.POST_NOTIFICATIONS" />
<application
android:name=".application.XChatApplication"

View File

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

View File

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

View File

@@ -1,6 +1,12 @@
package com.yizhuan.erban.main.helper;
import static android.Manifest.permission.POST_NOTIFICATIONS;
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.common.widget.dialog.DialogManager;
@@ -35,9 +41,21 @@ public class NoticationsUiHelper {
private static final long CACHE_DISTANCE_TIME = 3 * TimeUtils.MILLIS_OF_A_DAY;
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;
}
enableNotification(activity, dialogManager);
}
private static void enableNotification(Activity activity, DialogManager dialogManager) {
Single.create(new SingleOnSubscribe<String>() {
@Override
public void subscribe(SingleEmitter<String> emitter) throws Exception {

View File

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

View File

@@ -6,6 +6,7 @@ import android.content.Intent
import android.graphics.Bitmap
import android.graphics.Color
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.text.TextUtils
@@ -435,16 +436,14 @@ class UserInfoModifyActivity : BaseViewBindingActivity<ActivityUserInfoModifyBin
private fun checkStoragePermission() {
if (!EasyPermissions.hasPermissions(
this,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
)
) {
EasyPermissions.requestPermissions(
this,
getString(R.string.permission_storage_rationale),
PERMISSION_CODE_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
)
} else {
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.graphics.Bitmap
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.view.View
@@ -20,7 +21,6 @@ import com.yalantis.ucrop.UCrop
import com.yizhuan.erban.R
import com.yizhuan.erban.application.XChatApplication
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.ui.user.adapter.UserModifyPhotosAdapter
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.UserPhoto
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.util.PhotoCompressCallback
import com.yizhuan.xchat_android_library.common.util.PhotoCompressUtil
@@ -219,16 +220,14 @@ class UserModifyPhotosActivity : TakePhotoActivity(), PhotoItemClickListener,
private fun checkStoragePermission() {
if (!EasyPermissions.hasPermissions(
this,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
)
) {
EasyPermissions.requestPermissions(
this,
getString(R.string.permission_storage_rationale),
PERMISSION_CODE_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
)
} else {
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.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
@@ -619,16 +620,14 @@ public class PublishActivity extends BaseMvpActivity<IPublishView, PublishPresen
private void checkStoragePermission() {
if (!EasyPermissions.hasPermissions(
this,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE
)
) {
EasyPermissions.requestPermissions(
this,
getString(R.string.permission_storage_rationale),
PERMISSION_CODE_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE
);
} else {
PhotoProvider.photoProvider(

View File

@@ -4,6 +4,7 @@ import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
@@ -84,7 +85,7 @@ public class MusicListActivity extends BaseMvpActivity<IMusicListView, MusicList
EventBus.getDefault().register(this);
page = getIntent().getIntExtra(KEY_PAGE, 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())
.subscribe(aBoolean -> {
if (!aBoolean) {

View File

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

View File

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

View File

@@ -7,6 +7,7 @@ import android.content.Context;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.text.TextUtils;
@@ -60,7 +61,7 @@ public class AlbumModel {
public void query(Context context, final CallBack callBack) {
final Context appCxt = context.getApplicationContext();
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();
return;
}

View File

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

View File

@@ -7,6 +7,7 @@ import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
@@ -459,10 +460,15 @@ public class PuzzleActivity extends AppCompatActivity implements View.OnClickLis
public void onSuccess(File file) {
Intent intent = new Intent();
Photo photo = new Photo(file.getName(), UriUtils.getUri(PuzzleActivity.this,
Photo photo = null;
try {
photo = new Photo(file.getName(), UriUtils.getUri(PuzzleActivity.this,
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);
setResult(RESULT_OK, intent);
PuzzleActivity.this.finish();
@@ -576,8 +582,7 @@ public class PuzzleActivity extends AppCompatActivity implements View.OnClickLis
protected String[] getNeedPermissions() {
return new String[]{Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE};
Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE};
}
@Override

View File

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