feat:升级适配Android13
This commit is contained in:
@@ -24,8 +24,15 @@
|
||||
<!-- 控制呼吸灯,振动器等,用于新消息提醒 -->
|
||||
<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" />
|
||||
@@ -67,13 +74,7 @@
|
||||
|
||||
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
|
||||
<!-- 适配安卓12&11获取当前已安装的所有应用列表-->
|
||||
<queries>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<application
|
||||
android:name="com.nnbc123.app.application.XChatApplication"
|
||||
android:allowBackup="false"
|
||||
|
@@ -135,7 +135,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
|
||||
*/
|
||||
private fun setupRoomTitleMarquee() {
|
||||
try {
|
||||
val configuration = ViewConfiguration.get(context)
|
||||
val configuration = ViewConfiguration.get(requireContext())
|
||||
val claz: Class<*> = configuration.javaClass
|
||||
val field = claz.getDeclaredField("mFadingMarqueeEnabled")
|
||||
field.isAccessible = true
|
||||
|
@@ -100,11 +100,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()
|
||||
}
|
||||
|
@@ -1,6 +1,12 @@
|
||||
package com.nnbc123.app.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.nnbc123.app.common.widget.dialog.DialogManager;
|
||||
import com.nnbc123.app.utils.NotificationsUtils;
|
||||
@@ -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 {
|
||||
@@ -99,5 +117,4 @@ public class NoticationsUiHelper {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
@@ -3,6 +3,7 @@ package com.nnbc123.app.team.view;
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.netease.nim.uikit.business.session.fragment.MessageFragment;
|
||||
@@ -121,8 +122,6 @@ public class NimTeamMessageFragment extends MessageFragment {
|
||||
@SuppressLint("CheckResult")
|
||||
public void onNimAudioChatEvent(NimAudioChatEvent event) {
|
||||
checkPermission(
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
Manifest.permission.RECORD_AUDIO)
|
||||
.subscribe(result -> {
|
||||
if (result) {
|
||||
@@ -137,8 +136,7 @@ public class NimTeamMessageFragment extends MessageFragment {
|
||||
@SuppressLint("CheckResult")
|
||||
public void onNimImageActionEvent(NimImageActionEvent event) {
|
||||
checkPermission(
|
||||
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,
|
||||
Manifest.permission.CAMERA)
|
||||
.subscribe(result -> {
|
||||
if (result) {
|
||||
|
@@ -7,6 +7,7 @@ import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.media.AudioManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.text.SpannableString;
|
||||
@@ -625,8 +626,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@SuppressLint("CheckResult")
|
||||
public void onNimAudioChatEvent(NimAudioChatEvent event) {
|
||||
String[] perms = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
String[] perms = new String[]{
|
||||
Manifest.permission.RECORD_AUDIO};
|
||||
String tips = ResUtil.getString(R.string.permission_denied_tips_mic);
|
||||
if (RequestPermissionPromptDialog.Companion.isNeedPrompt()
|
||||
@@ -670,8 +670,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@SuppressLint("CheckResult")
|
||||
public void onNimImageActionEvent(NimImageActionEvent event) {
|
||||
checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
checkPermission((Build.VERSION.SDK_INT >= 33) ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
Manifest.permission.CAMERA)
|
||||
.subscribe(result -> {
|
||||
if (result) {
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package com.nnbc123.app.ui.setting.bean
|
||||
|
||||
import android.Manifest
|
||||
import android.os.Build
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.core.utils.TextUtils
|
||||
|
||||
@@ -53,8 +54,7 @@ enum class PermissionEntity(
|
||||
STORAGE(
|
||||
"存储", "读取手机存储,修改/删除手机储存", 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
|
||||
)
|
||||
);
|
||||
|
||||
|
@@ -5,6 +5,7 @@ import android.annotation.SuppressLint
|
||||
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.text.TextUtils
|
||||
@@ -313,8 +314,7 @@ class UserInfoModifyActivity : BaseViewBindingActivity<ActivityUserInfoModifyBin
|
||||
RequestPermissionPromptDialog.dismissCurrentDialog()
|
||||
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
|
||||
)
|
||||
) {
|
||||
if (RequestPermissionPromptDialog.isNeedPrompt()) {
|
||||
@@ -327,8 +327,7 @@ class UserInfoModifyActivity : BaseViewBindingActivity<ActivityUserInfoModifyBin
|
||||
this,
|
||||
"请您再次考虑授予存储空间权限,否则将无法正常加载您本地的文件内容。",
|
||||
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")
|
||||
|
@@ -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.text.TextUtils
|
||||
@@ -14,10 +15,8 @@ import android.widget.GridView
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.hjq.toast.ToastUtils
|
||||
import com.netease.nim.uikit.StatusBarUtil
|
||||
import com.netease.nim.uikit.common.util.sys.TimeUtil
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.application.XChatApplication
|
||||
import com.nnbc123.app.base.TitleBar
|
||||
@@ -26,10 +25,8 @@ import com.nnbc123.app.common.util.BitmapUtil
|
||||
import com.nnbc123.app.takephoto.app.TakePhotoActivity
|
||||
import com.nnbc123.app.takephoto.compress.CompressConfig
|
||||
import com.nnbc123.app.ui.user.UserModifyPhotosAdapter.PhotoItemClickListener
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
|
||||
import com.nnbc123.app.ui.widget.dialog.RequestPermissionPromptDialog
|
||||
import com.nnbc123.app.utils.RegexUtil
|
||||
import com.nnbc123.core.file.FileModel
|
||||
import com.nnbc123.core.user.UserModel
|
||||
import com.nnbc123.core.user.bean.UserInfo
|
||||
@@ -262,8 +259,7 @@ class UserModifyPhotosActivity : TakePhotoActivity(), PhotoItemClickListener,
|
||||
RequestPermissionPromptDialog.dismissCurrentDialog()
|
||||
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
|
||||
)
|
||||
) {
|
||||
if (RequestPermissionPromptDialog.isNeedPrompt()) {
|
||||
@@ -276,8 +272,7 @@ class UserModifyPhotosActivity : TakePhotoActivity(), PhotoItemClickListener,
|
||||
this,
|
||||
"请您再次考虑授予存储空间权限,否则将无法正常加载您本地的文件内容。",
|
||||
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")
|
||||
|
@@ -557,8 +557,7 @@ public class JSInterface {
|
||||
public void saveBase64Image(String imageBase64) {
|
||||
mActivity.runOnUiThread(() ->
|
||||
mActivity.checkPermission(
|
||||
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
|
||||
)
|
||||
.subscribe(aBoolean -> {
|
||||
if (aBoolean) {
|
||||
|
@@ -4,6 +4,7 @@ import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
@@ -199,7 +200,7 @@ public class PublishActivity extends BaseMvpActivity<IPublishView, PublishPresen
|
||||
PublishItem item = imageShowList.get(position);
|
||||
if (item.isAddItem()) {
|
||||
String tips = ResUtil.getString(R.string.permission_denied_tips_image);
|
||||
String permission = Manifest.permission.READ_EXTERNAL_STORAGE;
|
||||
String permission = Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE;
|
||||
if (RequestPermissionPromptDialog.Companion.isNeedPrompt()
|
||||
&& !PermissionHelper.INSTANCE.isAllGender(rxPermissions, permission)) {
|
||||
new RequestPermissionPromptDialog(this, tips).show();
|
||||
|
@@ -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 androidx.fragment.app.Fragment;
|
||||
@@ -95,7 +96,7 @@ public class MusicListActivity extends BaseMvpActivity<IMusicListView, MusicList
|
||||
page = getIntent().getIntExtra(KEY_PAGE, page);
|
||||
viewPager.setCurrentItem(page);
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.ROOM_SHARING_MUSIC, "共享音乐");
|
||||
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) {
|
||||
|
@@ -22,7 +22,7 @@ data class RoomHourRankInfo(
|
||||
return 0
|
||||
}
|
||||
|
||||
override fun writeToParcel(p0: Parcel?, p1: Int) {
|
||||
override fun writeToParcel(p0: Parcel, p1: Int) {
|
||||
p0?.writeLong(roomUid ?: 0)
|
||||
p0?.writeLong(rank ?: 0)
|
||||
p0?.writeLong(diffValue ?: 0)
|
||||
|
@@ -24,9 +24,9 @@ with_jenkins=false
|
||||
only_arm64=false
|
||||
|
||||
|
||||
COMPILE_SDK_VERSION=32
|
||||
COMPILE_SDK_VERSION=33
|
||||
MIN_SDK_VERSION=21
|
||||
TARGET_SDK_VERSION=32
|
||||
TARGET_SDK_VERSION=33
|
||||
|
||||
version_name=2.0.0
|
||||
version_code=2000
|
@@ -3,10 +3,16 @@
|
||||
package="com.nnbc123.library">
|
||||
|
||||
<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>
|
||||
<activity
|
||||
android:name=".easypermisssion.AppSettingsDialogHolderActivity"
|
||||
|
@@ -1,12 +1,14 @@
|
||||
package com.nnbc123.library.easyphoto.models.album;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.ContentUris;
|
||||
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 +62,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;
|
||||
}
|
||||
@@ -82,6 +84,7 @@ public class AlbumModel {
|
||||
canRun = false;
|
||||
}
|
||||
|
||||
@SuppressLint("Range")
|
||||
private synchronized void initAlbum(Context context) {
|
||||
album.clear();
|
||||
if (Setting.selectedPhotos.size() > Setting.count) {
|
||||
|
@@ -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 (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
|
@@ -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 (Exception 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
|
||||
|
@@ -3,6 +3,8 @@ package com.nnbc123.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();
|
||||
|
@@ -2,6 +2,7 @@ package com.netease.nim.uikit.business.session.actions
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.text.TextUtils
|
||||
import com.netease.nim.uikit.R
|
||||
import com.nnbc123.library.common.application.BaseApp
|
||||
@@ -37,8 +38,7 @@ abstract class PickImageActionNew protected constructor(
|
||||
}
|
||||
},
|
||||
"访问你的本地内容,以能正常使用图片上传、视频发送等应用功能",
|
||||
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
|
||||
)
|
||||
} ?: checkStoragePermission()
|
||||
}
|
||||
|
Reference in New Issue
Block a user