2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-08-22 09:58:08 +00:00

Removed APN settings from user preferences completely and replaced Klinker's get APN settings method with TelephonyHelper's getPreferredApn method.

This commit is contained in:
Aniket Kumar 2020-08-05 15:14:30 +05:30
parent 83cf689478
commit 2758fba3d0
6 changed files with 42 additions and 58 deletions

View File

@ -381,15 +381,6 @@
<string name="set_long_text_as_mms" translatable="false">set_long_text_as_mms</string>
<string name="convert_to_mms_after_title">Convert to MMS</string>
<string name="convert_to_mms_after" translatable="false">convert_to_mms_after</string>
<string name="sms_pref_set_mmsc_dialog_desc">Set MMSC</string>
<string name="sms_pref_set_mmsc_title">MMSC</string>
<string name="sms_pref_set_mmsc" translatable="false">sms_pref_set_mmsc</string>
<string name="sms_pref_set_mms_proxy_dialog_desc">Set MMS proxy</string>
<string name="sms_pref_set_mms_proxy_title">MMS proxy</string>
<string name="sms_pref_set_mms_proxy" translatable="false">sms_pref_set_mms_proxy</string>
<string name="sms_pref_set_mms_port_dialog_desc">Set MMS port</string>
<string name="sms_pref_set_mms_port_title">MMS port</string>
<string name="sms_pref_set_mms_port" translatable="false">sms_pref_set_mms_port</string>
<string name="convert_to_mms_after_default" translatable="false">3</string>
<string-array name="convert_to_mms_after_entries">
<item>After one message</item>

View File

@ -1,32 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:keep="@xml/smsplugin_preferences">
<EditTextPreference
android:dialogMessage="@string/sms_pref_set_mmsc_dialog_desc"
android:key="@string/sms_pref_set_mmsc"
android:title="@string/sms_pref_set_mmsc_title"
android:defaultValue="Not set"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
android:dialogMessage="@string/sms_pref_set_mms_proxy_dialog_desc"
android:key="@string/sms_pref_set_mms_proxy"
android:title="@string/sms_pref_set_mms_proxy_title"
android:defaultValue="Not set"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
android:dialogMessage="@string/sms_pref_set_mms_port_dialog_desc"
android:key="@string/sms_pref_set_mms_port"
android:title="@string/sms_pref_set_mms_port_title"
android:defaultValue="Not set"
app:useSimpleSummaryProvider="true" />
<CheckBoxPreference
android:id="@+id/group_message_preference"
android:defaultValue="true"

View File

@ -32,7 +32,7 @@ public class DelegatingMmsReceivedReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
MmsReceivedReceiver delegate = new MmsReceivedReceiver();
delegate.loadFromPreferences(context);
delegate.getPreferredApn(context, intent);
delegate.onReceive(context, intent);
}
}

View File

@ -22,14 +22,14 @@ package org.kde.kdeconnect.Plugins.SMSPlugin;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.preference.PreferenceManager;
import android.os.Build;
import android.util.Log;
import com.klinker.android.send_message.Transaction;
import com.klinker.android.send_message.Utils;
import org.kde.kdeconnect_tp.R;
import org.kde.kdeconnect.Helpers.TelephonyHelper;
/**
* Receiver for notifying user when a new MMS has been received by the device. By default it will
@ -38,9 +38,7 @@ import org.kde.kdeconnect_tp.R;
*/
public class MmsReceivedReceiver extends com.klinker.android.send_message.MmsReceivedReceiver {
private String mmscUrl = null;
private String mmsProxy = null;
private String mmsPort = null;
private TelephonyHelper.ApnSetting apnSetting = null;
@Override
public void onMessageReceived(Context context, Uri messageUri) {
@ -56,11 +54,9 @@ public class MmsReceivedReceiver extends com.klinker.android.send_message.MmsRec
Log.v("MmsReceived", "error: " + error);
}
public void loadFromPreferences(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
mmscUrl = prefs.getString(context.getString(R.string.sms_pref_set_mmsc), "");
mmsProxy = prefs.getString(context.getString(R.string.sms_pref_set_mms_proxy), "");
mmsPort = prefs.getString(context.getString(R.string.sms_pref_set_mms_port), "");
public void getPreferredApn(Context context, Intent intent) {
int subscriptionId = intent.getIntExtra(SUBSCRIPTION_ID, Utils.getDefaultSubscriptionId());
apnSetting = TelephonyHelper.getPreferredApn(context, subscriptionId);
}
/**
@ -71,16 +67,17 @@ public class MmsReceivedReceiver extends com.klinker.android.send_message.MmsRec
*/
@Override
public MmscInformation getMmscInfoForReceptionAck() {
if (apnSetting != null) {
String mmscUrl = apnSetting.getMmsc().toString();
String mmsProxy = apnSetting.getMmsProxyAddressAsString();
int mmsPort = apnSetting.getMmsProxyPort();
if (mmscUrl != null || mmsProxy != null || mmsPort != null) {
try {
return new MmscInformation(mmscUrl, mmsProxy, Integer.parseInt(mmsPort));
return new MmscInformation(mmscUrl, mmsProxy, mmsPort);
} catch (Exception e) {
Log.e("MmsReceivedReceiver", "Exception", e);
return null;
}
} else {
return null;
}
return null;
}
}

View File

@ -34,6 +34,7 @@ import com.klinker.android.send_message.Utils;
import org.apache.commons.lang3.ArrayUtils;
import org.kde.kdeconnect.Helpers.SMSHelper;
import org.kde.kdeconnect.Helpers.TelephonyHelper;
import org.kde.kdeconnect_tp.R;
import java.util.ArrayList;
@ -62,17 +63,16 @@ public class SmsMmsUtils {
try {
Settings settings = new Settings();
TelephonyHelper.ApnSetting apnSettings = TelephonyHelper.getPreferredApn(context, subID);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
// If the build version is less than lollipop then we have to manually take the APN settings
// from the user in order to be able to send MMS.
settings.setMmsc(prefs.getString(context.getString(R.string.sms_pref_set_mmsc), ""));
settings.setProxy(prefs.getString(context.getString(R.string.sms_pref_set_mms_proxy), ""));
settings.setPort(prefs.getString(context.getString(R.string.sms_pref_set_mms_port), ""));
if (apnSettings != null) {
settings.setMmsc(apnSettings.getMmsc().toString());
settings.setProxy(apnSettings.getMmsProxyAddressAsString());
settings.setPort(Integer.toString(apnSettings.getMmsProxyPort()));
} else {
settings.setUseSystemSending(true);
}
settings.setUseSystemSending(true);
if (Utils.isDefaultSmsApp(context)) {
settings.setSendLongAsMms(longTextAsMms);
settings.setSendLongAsMmsAfter(sendLongAsMmsAfter);

View File

@ -22,6 +22,7 @@ package org.kde.kdeconnect.UserInterface;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
@ -41,6 +42,7 @@ import com.klinker.android.send_message.Utils;
import org.kde.kdeconnect.BackgroundService;
import org.kde.kdeconnect.Device;
import org.kde.kdeconnect.Helpers.SecurityHelpers.SslHelper;
import org.kde.kdeconnect.Helpers.TelephonyHelper;
import org.kde.kdeconnect.Plugins.Plugin;
import org.kde.kdeconnect.Plugins.SMSPlugin.SMSPlugin;
import org.kde.kdeconnect.UserInterface.List.FailedPluginListItem;
@ -54,6 +56,7 @@ import org.kde.kdeconnect_tp.databinding.ActivityDeviceBinding;
import java.util.ArrayList;
import java.util.Collection;
import java.util.ConcurrentModificationException;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@ -309,10 +312,25 @@ public class DeviceFragment extends Fragment {
});
// Add a button to the pluginList for setting KDE Connect as default sms app for allowing it to send mms
// for now I'm not able to integrate it with other plugin list, but this needs to be reimplemented in a better way.
if (!Utils.isDefaultSmsApp(mActivity)) {
// Check if there are any preferred APN settings available on the device, if not then disable the MMS support
boolean hasApnSettings = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
List<Integer> subIds = TelephonyHelper.getActiveSubscriptionIDs(mActivity);
for (final int subId : subIds) {
if (TelephonyHelper.getPreferredApn(mActivity, subId) != null) {
hasApnSettings = true;
break;
}
}
} else {
if (TelephonyHelper.getPreferredApn(mActivity, 0) != null) {
hasApnSettings = true;
}
}
for (Plugin p : plugins) {
if (p.getPluginKey().equals("SMSPlugin")) {
if (p.getPluginKey().equals("SMSPlugin") && hasApnSettings) {
pluginListItems.add(new SetDefaultAppPluginListItem(p, mActivity.getResources().getString(R.string.pref_plugin_telepathy_mms), (action) -> {
DialogFragment dialog = new DefaultSmsAppAlertDialogFragment.Builder()
.setTitle(R.string.set_default_sms_app_title)