Allow selecting audio file for send sound

master
M66B 3 weeks ago
parent d8241bb86b
commit 0655147417

@ -81,21 +81,22 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
private boolean hasAccount;
static final int REQUEST_SOUND_INBOUND = 1;
static final int REQUEST_SOUND_OUTBOUND = 2;
static final int REQUEST_CHOOSE_ACCOUNT = 3;
static final int REQUEST_DONE = 4;
static final int REQUEST_IMPORT_CERTIFICATE = 5;
static final int REQUEST_OAUTH = 6;
static final int REQUEST_STILL = 7;
static final int REQUEST_SELECT_IDENTITY = 8;
static final int REQUEST_EDIT_SIGNATURE = 9;
static final int REQUEST_CHANGE_PASSWORD = 10;
static final int REQUEST_EDIT_ACCOUNT_COLOR = 11;
static final int REQUEST_DELETE_ACCOUNT = 12;
static final int REQUEST_EDIT_IDENITY_COLOR = 13;
static final int REQUEST_IMPORT_PROVIDERS = 14;
static final int REQUEST_GRAPH_CONTACTS = 15;
static final int REQUEST_GRAPH_CONTACTS_OAUTH = 16;
static final int REQUEST_RINGTONE_OUTBOUND = 2;
static final int REQUEST_AUDIO_OUTBOUND = 3;
static final int REQUEST_CHOOSE_ACCOUNT = 4;
static final int REQUEST_DONE = 5;
static final int REQUEST_IMPORT_CERTIFICATE = 6;
static final int REQUEST_OAUTH = 7;
static final int REQUEST_STILL = 8;
static final int REQUEST_SELECT_IDENTITY = 9;
static final int REQUEST_EDIT_SIGNATURE = 10;
static final int REQUEST_CHANGE_PASSWORD = 11;
static final int REQUEST_EDIT_ACCOUNT_COLOR = 12;
static final int REQUEST_DELETE_ACCOUNT = 13;
static final int REQUEST_EDIT_IDENITY_COLOR = 14;
static final int REQUEST_IMPORT_PROVIDERS = 15;
static final int REQUEST_GRAPH_CONTACTS = 16;
static final int REQUEST_GRAPH_CONTACTS_OAUTH = 17;
static final int REQUEST_DEBUG_INFO = 7000;
static final int PI_CONNECTION = 1;

@ -51,6 +51,7 @@ import android.widget.Spinner;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.PopupMenu;
import androidx.appcompat.widget.SwitchCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.preference.PreferenceManager;
@ -467,14 +468,39 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
btnSound.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String sound = prefs.getString("sound_sent", null);
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.title_advanced_sound));
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, sound == null ? null : Uri.parse(sound));
startActivityForResult(Helper.getChooser(getContext(), intent), ActivitySetup.REQUEST_SOUND_OUTBOUND);
PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(getContext(), getViewLifecycleOwner(), v);
popupMenu.getMenu().add(Menu.NONE, R.string.title_rule_select_sound_ringtone, 1, R.string.title_rule_select_sound_ringtone);
popupMenu.getMenu().add(Menu.NONE, R.string.title_rule_select_sound_audio, 2, R.string.title_rule_select_sound_audio);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.string.title_rule_select_sound_ringtone) {
String sound = prefs.getString("sound_sent", null);
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.title_advanced_sound));
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, sound == null ? null : Uri.parse(sound));
startActivityForResult(Helper.getChooser(getContext(), intent), ActivitySetup.REQUEST_RINGTONE_OUTBOUND);
return true;
} else if (itemId == R.string.title_rule_select_sound_audio) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setType("audio/*");
startActivityForResult(Helper.getChooser(getContext(), intent), ActivitySetup.REQUEST_AUDIO_OUTBOUND);
return true;
}
return false;
}
});
popupMenu.show();
}
});
@ -998,10 +1024,14 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
try {
switch (requestCode) {
case ActivitySetup.REQUEST_SOUND_OUTBOUND:
case ActivitySetup.REQUEST_RINGTONE_OUTBOUND:
if (resultCode == RESULT_OK && data != null)
onSelectSound(data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI));
break;
case ActivitySetup.REQUEST_AUDIO_OUTBOUND:
if (resultCode == RESULT_OK && data != null)
onSelectSound(data.getData());
break;
}
} catch (Throwable ex) {
Log.e(ex);

Loading…
Cancel
Save