diff options
author | Christian Schneppe <christian@pix-art.de> | 2018-04-29 23:24:05 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2018-04-29 23:24:05 +0200 |
commit | 9a22917951a9dacc9470633f94b769c4d7187943 (patch) | |
tree | b4c484158caf88273a9ebecc81074bced0fd675c /src/main/java/de/pixart/messenger/ui/ConversationFragment.java | |
parent | f149772daffab5351aec06c5e62ebb9e9d54dc64 (diff) |
migrate recording activity to view binder
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui/ConversationFragment.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/ConversationFragment.java | 87 |
1 files changed, 26 insertions, 61 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index cad1beb44..def3c00f6 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -304,7 +304,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke return false; } } - if (hasStoragePermission(REQUEST_ADD_EDITOR_CONTENT)) { + if (hasPermissions(REQUEST_ADD_EDITOR_CONTENT, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { attachImageToConversation(inputContentInfo.getContentUri()); } else { mPendingEditorContent = inputContentInfo.getContentUri(); @@ -1561,22 +1561,16 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke } public void attachFile(final int attachmentChoice) { - if (attachmentChoice == ATTACHMENT_CHOICE_TAKE_FROM_CAMERA) { - if (!hasStorageAndCameraPermission(attachmentChoice)) { - return; - } - } else if (attachmentChoice != ATTACHMENT_CHOICE_LOCATION) { - if (!Config.ONLY_INTERNAL_STORAGE && !hasStoragePermission(attachmentChoice)) { + if (attachmentChoice == ATTACHMENT_CHOICE_RECORD_VOICE) { + if (!hasPermissions(attachmentChoice, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO)) { return; } - } - if (attachmentChoice == ATTACHMENT_CHOICE_RECORD_VOICE) { - if (!activity.hasMicPermission(attachmentChoice)) { + } else if (attachmentChoice == ATTACHMENT_CHOICE_TAKE_FROM_CAMERA) { + if (!hasPermissions(attachmentChoice, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA)) { return; } - } - if (attachmentChoice == ATTACHMENT_CHOICE_LOCATION) { - if (!activity.hasLocationPermission(attachmentChoice)) { + } else if (attachmentChoice != ATTACHMENT_CHOICE_LOCATION) { + if (!hasPermissions(attachmentChoice, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { return; } } @@ -1654,7 +1648,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke } } else { @StringRes int res; - if (Manifest.permission.CAMERA.equals(getFirstDenied(grantResults, permissions))) { + String firstDenied = getFirstDenied(grantResults, permissions); + if (Manifest.permission.RECORD_AUDIO.equals(firstDenied)) { + res = R.string.no_microphone_permission; + } else if (Manifest.permission.CAMERA.equals(firstDenied)) { res = R.string.no_camera_permission; } else { res = R.string.no_storage_permission; @@ -1665,7 +1662,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke } public void startDownloadable(Message message) { - if (!Config.ONLY_INTERNAL_STORAGE && !hasStoragePermission(REQUEST_START_DOWNLOAD)) { + if (!hasPermissions(REQUEST_START_DOWNLOAD, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { this.mPendingDownloadableMessage = message; return; } @@ -1684,26 +1681,6 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke } } - private boolean hasStorageAndCameraPermission(int requestCode) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - List<String> missingPermissions = new ArrayList<>(); - if (!Config.ONLY_INTERNAL_STORAGE && activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - missingPermissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); - } - if (activity.checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { - missingPermissions.add(Manifest.permission.CAMERA); - } - if (missingPermissions.size() == 0) { - return true; - } else { - requestPermissions(missingPermissions.toArray(new String[missingPermissions.size()]), requestCode); - return false; - } - } else { - return true; - } - } - @SuppressLint("InflateParams") protected void clearHistoryDialog(final Conversation conversation) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); @@ -1728,13 +1705,22 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke builder.create().show(); } - private boolean hasStoragePermission(int requestCode) { + private boolean hasPermissions(int requestCode, String... permissions) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, requestCode); - return false; - } else { + final List<String> missingPermissions = new ArrayList<>(); + for (String permission : permissions) { + if (Config.ONLY_INTERNAL_STORAGE && permission.equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + continue; + } + if (activity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { + missingPermissions.add(permission); + } + } + if (missingPermissions.size() == 0) { return true; + } else { + requestPermissions(missingPermissions.toArray(new String[missingPermissions.size()]), requestCode); + return false; } } else { return true; @@ -1747,7 +1733,6 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke final PresenceSelector.OnPresenceSelected callback = () -> { final Intent intent = new Intent(); boolean chooser = false; - String fallbackPackageId = null; switch (attachmentChoice) { case ATTACHMENT_CHOICE_CHOOSE_IMAGE: intent.setAction(Intent.ACTION_GET_CONTENT); @@ -1807,8 +1792,6 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke } else { startActivityForResult(intent, attachmentChoice); } - } else if (fallbackPackageId != null) { - startActivity(getInstallApkIntent(fallbackPackageId)); } }; if (account.httpUploadAvailable() || attachmentChoice == ATTACHMENT_CHOICE_LOCATION) { @@ -1821,26 +1804,8 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke } } - private Intent getInstallApkIntent(final String packageId) { - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse("market://details?id=" + packageId)); - if (intent.resolveActivity(getActivity().getPackageManager()) != null) { - return intent; - } else { - intent.setData(Uri.parse("http://play.google.com/store/apps/details?id=" + packageId)); - return intent; - } - } - @Override public void onResume() { - new Handler().post(() -> { - final Activity activity = getActivity(); - if (activity == null) { - return; - } - getActivity().invalidateOptionsMenu(); - }); super.onResume(); binding.messagesView.post(this::fireReadEvent); } |