mirror of
https://github.com/M66B/FairEmail.git
synced 2025-03-15 08:29:24 +00:00
Added solution for no recorder/camera
This commit is contained in:
parent
ae138af830
commit
8a66fb97c0
3 changed files with 50 additions and 24 deletions
|
@ -90,6 +90,8 @@ android {
|
|||
buildConfigField "String", "CHANGELOG", "\"https://github.com/M66B/FairEmail/releases/\""
|
||||
buildConfigField "String", "GITHUB_LATEST_API", "\"https://api.github.com/repos/M66B/open-source-email/releases/latest\""
|
||||
buildConfigField "String", "OPENKEYCHAIN_URI", "\"https://f-droid.org/en/packages/org.sufficientlysecure.keychain/\""
|
||||
buildConfigField "String", "CAMERA_URI", "\"https://f-droid.org/en/packages/net.sourceforge.opencamera/\""
|
||||
buildConfigField "String", "RECORDER_URI", "\"https://f-droid.org/packages/com.github.axet.audiorecorder/\""
|
||||
buildConfigField "String", "APPS_URI", "\"https://github.com/M66B?tab=repositories/\""
|
||||
}
|
||||
play_beta {
|
||||
|
@ -101,6 +103,8 @@ android {
|
|||
buildConfigField "String", "CHANGELOG", "\"\""
|
||||
buildConfigField "String", "GITHUB_LATEST_API", "\"\""
|
||||
buildConfigField "String", "OPENKEYCHAIN_URI", "\"https://play.google.com/store/apps/details?id=org.sufficientlysecure.keychain\""
|
||||
buildConfigField "String", "CAMERA_URI", "\"https://play.google.com/store/apps/details?id=net.sourceforge.opencamera\""
|
||||
buildConfigField "String", "RECORDER_URI", "\"https://play.google.com/store/apps/details?id=com.github.axet.audiorecorder\""
|
||||
buildConfigField "String", "APPS_URI", "\"https://play.google.com/store/apps/dev?id=8420080860664580239\""
|
||||
}
|
||||
play_release {
|
||||
|
@ -112,6 +116,8 @@ android {
|
|||
buildConfigField "String", "CHANGELOG", "\"\""
|
||||
buildConfigField "String", "GITHUB_LATEST_API", "\"\""
|
||||
buildConfigField "String", "OPENKEYCHAIN_URI", "\"https://play.google.com/store/apps/details?id=org.sufficientlysecure.keychain\""
|
||||
buildConfigField "String", "CAMERA_URI", "\"https://play.google.com/store/apps/details?id=net.sourceforge.opencamera\""
|
||||
buildConfigField "String", "RECORDER_URI", "\"https://play.google.com/store/apps/details?id=com.github.axet.audiorecorder\""
|
||||
buildConfigField "String", "APPS_URI", "\"https://play.google.com/store/apps/dev?id=8420080860664580239\""
|
||||
}
|
||||
}
|
||||
|
|
|
@ -582,12 +582,6 @@ public class FragmentCompose extends FragmentBase {
|
|||
}
|
||||
});
|
||||
|
||||
PackageManager pm = getContext().getPackageManager();
|
||||
Intent take_photo = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
Intent record_audio = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
|
||||
media_bar.getMenu().findItem(R.id.menu_take_photo).setVisible(take_photo.resolveActivity(pm) != null);
|
||||
media_bar.getMenu().findItem(R.id.menu_record_audio).setVisible(record_audio.resolveActivity(pm) != null);
|
||||
|
||||
media_bar.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
|
||||
|
@ -1269,30 +1263,54 @@ public class FragmentCompose extends FragmentBase {
|
|||
}
|
||||
|
||||
private void onActionRecordAudio() {
|
||||
// https://developer.android.com/reference/android/provider/MediaStore.Audio.Media.html#RECORD_SOUND_ACTION
|
||||
PackageManager pm = getContext().getPackageManager();
|
||||
Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
|
||||
try {
|
||||
startActivityForResult(intent, REQUEST_RECORD_AUDIO);
|
||||
} catch (SecurityException ex) {
|
||||
Log.w(ex);
|
||||
Snackbar.make(view, getString(R.string.title_no_viewer, intent.getAction()), Snackbar.LENGTH_LONG).show();
|
||||
}
|
||||
if (intent.resolveActivity(pm) == null) {
|
||||
Snackbar snackbar = Snackbar.make(view, getString(R.string.title_no_recorder), Snackbar.LENGTH_INDEFINITE);
|
||||
snackbar.setAction(R.string.title_fix, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Helper.view(getContext(), Uri.parse(BuildConfig.RECORDER_URI), false);
|
||||
}
|
||||
});
|
||||
snackbar.show();
|
||||
} else
|
||||
try {
|
||||
startActivityForResult(intent, REQUEST_RECORD_AUDIO);
|
||||
} catch (SecurityException ex) {
|
||||
Log.w(ex);
|
||||
Snackbar.make(view, getString(R.string.title_no_viewer, intent.getAction()), Snackbar.LENGTH_INDEFINITE).show();
|
||||
}
|
||||
}
|
||||
|
||||
private void onActionTakePhoto() {
|
||||
File dir = new File(getContext().getCacheDir(), "photo");
|
||||
if (!dir.exists())
|
||||
dir.mkdir();
|
||||
File file = new File(dir, working + ".jpg");
|
||||
|
||||
// https://developer.android.com/training/camera/photobasics
|
||||
PackageManager pm = getContext().getPackageManager();
|
||||
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
try {
|
||||
photoURI = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID, file);
|
||||
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
|
||||
startActivityForResult(intent, REQUEST_TAKE_PHOTO);
|
||||
} catch (SecurityException ex) {
|
||||
Log.w(ex);
|
||||
Snackbar.make(view, getString(R.string.title_no_viewer, intent.getAction()), Snackbar.LENGTH_LONG).show();
|
||||
if (intent.resolveActivity(pm) == null) {
|
||||
Snackbar snackbar = Snackbar.make(view, getString(R.string.title_no_camera), Snackbar.LENGTH_LONG);
|
||||
snackbar.setAction(R.string.title_fix, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Helper.view(getContext(), Uri.parse(BuildConfig.CAMERA_URI), false);
|
||||
}
|
||||
});
|
||||
snackbar.show();
|
||||
} else {
|
||||
File dir = new File(getContext().getCacheDir(), "photo");
|
||||
if (!dir.exists())
|
||||
dir.mkdir();
|
||||
File file = new File(dir, working + ".jpg");
|
||||
|
||||
try {
|
||||
photoURI = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID, file);
|
||||
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
|
||||
startActivityForResult(intent, REQUEST_TAKE_PHOTO);
|
||||
} catch (SecurityException ex) {
|
||||
Log.w(ex);
|
||||
Snackbar.make(view, getString(R.string.title_no_viewer, intent.getAction()), Snackbar.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -664,6 +664,8 @@
|
|||
|
||||
<string name="title_no_answers">No reply templates defined</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_no_recorder">No suitable audio recorder app available</string>
|
||||
<string name="title_no_camera">No suitable camera app available</string>
|
||||
<string name="title_no_saf">Storage access framework not available</string>
|
||||
<string name="title_no_stream">An outdated app sent a file path instead of a file stream</string>
|
||||
<string name="title_no_contacts">Contact picker not available</string>
|
||||
|
|
Loading…
Add table
Reference in a new issue