Request read external storage permission needed to access device ringtone
This commit is contained in:
parent
348f63ef71
commit
3244418765
3 changed files with 31 additions and 3 deletions
|
@ -106,6 +106,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
|||
private static final int PERMISSIONS_REQUEST_SYNC = 207;
|
||||
private static final int PERMISSIONS_REQUEST_CONTACTS = 208;
|
||||
private static final int PERMISSIONS_RECORD_AUDIO_ECHO_CANCELLER = 209;
|
||||
private static final int PERMISSIONS_READ_EXTERNAL_STORAGE_DEVICE_RINGTONE = 210;
|
||||
|
||||
private static LinphoneActivity instance;
|
||||
|
||||
|
@ -1198,6 +1199,10 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
|||
checkAndRequestPermission(Manifest.permission.RECORD_AUDIO, PERMISSIONS_RECORD_AUDIO_ECHO_CANCELLER);
|
||||
}
|
||||
|
||||
public void checkAndRequestReadExternalStoragePermissionForDeviceRingtone() {
|
||||
checkAndRequestPermission(Manifest.permission.READ_EXTERNAL_STORAGE, PERMISSIONS_READ_EXTERNAL_STORAGE_DEVICE_RINGTONE);
|
||||
}
|
||||
|
||||
public void checkAndRequestPermissionsToSendImage() {
|
||||
ArrayList<String> permissionsList = new ArrayList<String>();
|
||||
|
||||
|
@ -1269,6 +1274,9 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
|||
((SettingsFragment) fragment).echoCalibrationFail();
|
||||
}
|
||||
break;
|
||||
case PERMISSIONS_READ_EXTERNAL_STORAGE_DEVICE_RINGTONE:
|
||||
((SettingsFragment) fragment).enableDeviceRingtone(grantResults[0] == PackageManager.PERMISSION_GRANTED);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,9 @@ import org.linphone.core.TunnelConfig;
|
|||
import org.linphone.mediastream.Log;
|
||||
import org.linphone.purchase.Purchasable;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
/**
|
||||
* @author Sylvain Berfini
|
||||
|
@ -1339,7 +1341,8 @@ public class LinphonePreferences {
|
|||
}
|
||||
|
||||
public boolean isDeviceRingtoneEnabled() {
|
||||
return getConfig().getBool("app", "device_ringtone", true);
|
||||
int readExternalStorage = mContext.getPackageManager().checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, mContext.getPackageName());
|
||||
return getConfig().getBool("app", "device_ringtone", true) && readExternalStorage == PackageManager.PERMISSION_GRANTED;
|
||||
}
|
||||
|
||||
public void enableDeviceRingtone(boolean enable) {
|
||||
|
|
|
@ -804,13 +804,30 @@ public class SettingsFragment extends PreferencesListFragment {
|
|||
setPreferenceDefaultValueAndSummary(R.string.pref_voice_mail_key, mPrefs.getVoiceMailUri());
|
||||
}
|
||||
|
||||
public void enableDeviceRingtone(boolean enabled) {
|
||||
LinphonePreferences.instance().enableDeviceRingtone(enabled);
|
||||
LinphoneManager.getInstance().enableDeviceRingtone(enabled);
|
||||
((CheckBoxPreference)findPreference(getString(R.string.pref_device_ringtone_key))).setChecked(enabled);
|
||||
}
|
||||
|
||||
private void setCallPreferencesListener() {
|
||||
findPreference(getString(R.string.pref_device_ringtone_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
boolean use = (Boolean) newValue;
|
||||
mPrefs.enableDeviceRingtone(use);
|
||||
LinphoneManager.getInstance().enableDeviceRingtone(use);
|
||||
if (use) {
|
||||
int readExternalStorage = getActivity().getPackageManager().checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, getActivity().getPackageName());
|
||||
if (readExternalStorage == PackageManager.PERMISSION_GRANTED) {
|
||||
mPrefs.enableDeviceRingtone(true);
|
||||
LinphoneManager.getInstance().enableDeviceRingtone(true);
|
||||
} else {
|
||||
LinphoneActivity.instance().checkAndRequestReadExternalStoragePermissionForDeviceRingtone();
|
||||
}
|
||||
} else {
|
||||
mPrefs.enableDeviceRingtone(false);
|
||||
LinphoneManager.getInstance().enableDeviceRingtone(false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue