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_SYNC = 207;
|
||||||
private static final int PERMISSIONS_REQUEST_CONTACTS = 208;
|
private static final int PERMISSIONS_REQUEST_CONTACTS = 208;
|
||||||
private static final int PERMISSIONS_RECORD_AUDIO_ECHO_CANCELLER = 209;
|
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;
|
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);
|
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() {
|
public void checkAndRequestPermissionsToSendImage() {
|
||||||
ArrayList<String> permissionsList = new ArrayList<String>();
|
ArrayList<String> permissionsList = new ArrayList<String>();
|
||||||
|
|
||||||
|
@ -1269,6 +1274,9 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
||||||
((SettingsFragment) fragment).echoCalibrationFail();
|
((SettingsFragment) fragment).echoCalibrationFail();
|
||||||
}
|
}
|
||||||
break;
|
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.mediastream.Log;
|
||||||
import org.linphone.purchase.Purchasable;
|
import org.linphone.purchase.Purchasable;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sylvain Berfini
|
* @author Sylvain Berfini
|
||||||
|
@ -1339,7 +1341,8 @@ public class LinphonePreferences {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDeviceRingtoneEnabled() {
|
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) {
|
public void enableDeviceRingtone(boolean enable) {
|
||||||
|
|
|
@ -804,13 +804,30 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
setPreferenceDefaultValueAndSummary(R.string.pref_voice_mail_key, mPrefs.getVoiceMailUri());
|
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() {
|
private void setCallPreferencesListener() {
|
||||||
findPreference(getString(R.string.pref_device_ringtone_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
findPreference(getString(R.string.pref_device_ringtone_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
boolean use = (Boolean) newValue;
|
boolean use = (Boolean) newValue;
|
||||||
mPrefs.enableDeviceRingtone(use);
|
if (use) {
|
||||||
LinphoneManager.getInstance().enableDeviceRingtone(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;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue