diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoAttachPermissionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoAttachPermissionCell.java index 820895b8a..507260bcc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoAttachPermissionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoAttachPermissionCell.java @@ -23,6 +23,8 @@ import org.telegram.messenger.R; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.LayoutHelper; +import tw.nekomimi.nekogram.NekoConfig; + public class PhotoAttachPermissionCell extends FrameLayout { private final Theme.ResourcesProvider resourcesProvider; @@ -70,6 +72,11 @@ public class PhotoAttachPermissionCell extends FrameLayout { imageView.setImageResource(R.drawable.permissions_gallery1); imageView2.setImageResource(R.drawable.permissions_gallery2); textView.setText(LocaleController.getString("GalleryPermissionText", R.string.GalleryPermissionText)); + if (NekoConfig.forceSystemPicker) { + imageView.setImageResource(R.drawable.baseline_open_in_browser_24); + imageView2.setVisibility(GONE); + textView.setText(LocaleController.getString("OpenInExternalApp", R.string.OpenInExternalApp)); + } imageView.setLayoutParams(LayoutHelper.createFrame(44, 44, Gravity.CENTER, 0, 0, 2, 27)); imageView2.setLayoutParams(LayoutHelper.createFrame(44, 44, Gravity.CENTER, 0, 0, 2, 27)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java index 6895ef435..aa4a840a2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java @@ -1243,16 +1243,8 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N if (num == 1) { showLayout(photoLayout); } else if (num == 3) { - if (Build.VERSION.SDK_INT >= 23 && baseFragment.getParentActivity().checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - baseFragment.getParentActivity().requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 4); - return; - } openAudioLayout(true); } else if (num == 4) { - if (Build.VERSION.SDK_INT >= 23 && baseFragment.getParentActivity().checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - baseFragment.getParentActivity().requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 4); - return; - } openDocumentsLayout(true); } else if (num == 5) { if (Build.VERSION.SDK_INT >= 23) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java index 6f34f3f31..c18e85807 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java @@ -100,6 +100,9 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearSmoothScroller; import androidx.recyclerview.widget.RecyclerView; +import tw.nekomimi.nekogram.NekoConfig; +import tw.nekomimi.nkmr.NekomuraConfig; + public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayout implements NotificationCenter.NotificationCenterDelegate { private RecyclerListView cameraPhotoRecyclerView; @@ -616,7 +619,11 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou return; } else if (noGalleryPermissions) { try { - parentAlert.baseFragment.getParentActivity().requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 4); + if (NekoConfig.forceSystemPicker) { + menu.onItemClick(open_in); // Use system photo picker + } else { + parentAlert.baseFragment.getParentActivity().requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 4); + } } catch (Exception ignore) { } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index 3a55fcb36..d980dceb7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -160,6 +160,7 @@ import kotlin.Unit; import kotlin.text.StringsKt; import tw.nekomimi.nekogram.BottomBuilder; import tw.nekomimi.nekogram.ExternalGcm; +import tw.nekomimi.nekogram.NekoConfig; import tw.nekomimi.nekogram.utils.EnvUtil; import tw.nekomimi.nkmr.NekomuraConfig; import tw.nekomimi.nekogram.NekoXConfig; @@ -4044,6 +4045,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa showPermissionErrorAlert(LocaleController.getString("VoipNeedCameraPermission", R.string.VoipNeedCameraPermission)); } } else if (requestCode == 4) { + NekoConfig.checkForceSystemPicker(); if (!granted) { showPermissionErrorAlert(LocaleController.getString("PermissionStorage", R.string.PermissionStorage)); } else { diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java index f33e517dc..cc9266e81 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java @@ -1,5 +1,6 @@ package tw.nekomimi.nekogram; +import android.Manifest; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; @@ -7,6 +8,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Typeface; +import android.os.Build; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; @@ -33,6 +35,8 @@ public class NekoConfig { public static final int TITLE_TYPE_ICON = 1; public static final int TITLE_TYPE_MIX = 2; + public static boolean forceSystemPicker = false; // SDK23+ and no storage permission + public static String getOpenPGPAppName() { if (StrUtil.isNotBlank(NekomuraConfig.openPGPApp.String())) { @@ -74,6 +78,16 @@ public class NekoConfig { } static { + checkForceSystemPicker(); + } + + public static void checkForceSystemPicker() { + // TODO show alert? + // TODO not working: send photo (upstream bug) + if (Build.VERSION.SDK_INT >= 23 && ApplicationLoader.applicationContext.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + forceSystemPicker = true; + BuildVars.NO_SCOPED_STORAGE = false; + } }