Skip to content

Commit 3057027

Browse files
committed
Merge branch 'remove_sms_support' of https://github.com/archie94/haven into archie94-remove_sms_support
2 parents 693db02 + 4226024 commit 3057027

File tree

20 files changed

+126
-99
lines changed

20 files changed

+126
-99
lines changed

src/main/AndroidManifest.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
<uses-permission android:name="android.permission.CAMERA" />
88
<uses-permission android:name="android.permission.RECORD_AUDIO" />
99
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
10-
<uses-permission android:name="android.permission.SEND_SMS" />
1110
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
1211

1312
<uses-feature

src/main/java/org/havenapp/main/ListActivity.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -368,17 +368,8 @@ private void testNotifications ()
368368
if (!TextUtils.isEmpty(preferences.getSignalUsername())) {
369369
SignalSender sender = SignalSender.getInstance(this, preferences.getSignalUsername().trim());
370370
ArrayList<String> recip = new ArrayList<>();
371-
recip.add(preferences.getSmsNumber());
371+
recip.add(preferences.getRemotePhoneNumber());
372372
sender.sendMessage(recip, resourceManager.getString(R.string.signal_test_message), null);
373373
}
374-
else if (!TextUtils.isEmpty(preferences.getSmsNumber())) {
375-
376-
SmsManager manager = SmsManager.getDefault();
377-
378-
StringTokenizer st = new StringTokenizer(preferences.getSmsNumber(),",");
379-
while (st.hasMoreTokens())
380-
manager.sendTextMessage(st.nextToken(), null, resourceManager.getString(R.string.signal_test_message), null, null);
381-
382-
}
383374
}
384375
}

src/main/java/org/havenapp/main/PreferenceManager.java

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,17 @@
2222
import android.content.Context;
2323
import android.content.SharedPreferences;
2424
import android.content.SharedPreferences.Editor;
25+
import android.text.TextUtils;
2526

2627
import org.havenapp.main.sensors.motion.LuminanceMotionDetector;
2728

2829
import java.io.File;
2930
import java.util.Date;
31+
import java.util.Objects;
3032

33+
import javax.annotation.Nullable;
34+
35+
import androidx.annotation.NonNull;
3136
import androidx.appcompat.app.AppCompatActivity;
3237

3338

@@ -62,12 +67,9 @@ public class PreferenceManager {
6267
private static final String MICROPHONE_SENSITIVITY="microphone_sensitivity";
6368
public static final String CONFIG_SOUND = "config_sound";
6469
public static final String CONFIG_TIME_DELAY = "config_delay_time";
65-
public static final String SMS_ACTIVE = "sms_active";
66-
public static final String SMS_NUMBER = "sms_number";
6770
public static final String REGISTER_SIGNAL = "register_signal";
6871
public static final String VERIFY_SIGNAL = "verify_signal";
6972
public static final String VOICE_VERIFY_SIGNAL = "voice_verify_signal";
70-
public static final String SEND_SMS = "send_sms";
7173
private static final String UNLOCK_CODE="unlock_code";
7274

7375
private static final String ACCESS_TOKEN="access_token";
@@ -96,6 +98,10 @@ public class PreferenceManager {
9698
public static final String CONFIG_BASE_STORAGE = "config_base_storage";
9799
private static final String CONFIG_BASE_STORAGE_DEFAULT = "/haven";
98100

101+
// keeping the key value same for data migration.
102+
static final String REMOTE_PHONE_NUMBER = "sms_number";
103+
static final String REMOTE_NOTIFICATION_ACTIVE = "remote_notification_active";
104+
99105
private Context context;
100106

101107
public PreferenceManager(Context context) {
@@ -242,24 +248,24 @@ public void setMicrophoneSensitivity(String sensitivity) {
242248
public String getMicrophoneSensitivity() {
243249
return appSharedPrefs.getString(MICROPHONE_SENSITIVITY, MEDIUM);
244250
}
245-
246-
public void activateSms(boolean active) {
247-
prefsEditor.putBoolean(SMS_ACTIVE, active);
248-
prefsEditor.commit();
251+
252+
public void setRemoteNotificationActive(boolean isRemoteNotificationActive) {
253+
prefsEditor.putBoolean(REMOTE_NOTIFICATION_ACTIVE, isRemoteNotificationActive);
254+
prefsEditor.apply();
249255
}
250-
251-
public boolean getSmsActivation() {
252-
return appSharedPrefs.getBoolean(SMS_ACTIVE, false);
256+
257+
public boolean isRemoteNotificationActive() {
258+
return appSharedPrefs.getBoolean(REMOTE_NOTIFICATION_ACTIVE, false);
253259
}
254-
255-
public void setSmsNumber(String number) {
256260

257-
prefsEditor.putString(SMS_NUMBER, number);
258-
prefsEditor.commit();
261+
public void setRemotePhoneNumber(@NonNull String remotePhoneNumber) {
262+
prefsEditor.putString(REMOTE_PHONE_NUMBER, remotePhoneNumber.trim());
263+
prefsEditor.apply();
259264
}
260-
261-
public String getSmsNumber() {
262-
return appSharedPrefs.getString(SMS_NUMBER, "");
265+
266+
@NonNull
267+
public String getRemotePhoneNumber() {
268+
return Objects.requireNonNull(appSharedPrefs.getString(REMOTE_PHONE_NUMBER, ""));
263269
}
264270

265271
public int getTimerDelay ()

src/main/java/org/havenapp/main/SettingsFragment.java

Lines changed: 76 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66

77
import android.Manifest;
8+
import android.annotation.SuppressLint;
89
import android.app.Activity;
910
import android.content.Context;
1011
import android.content.Intent;
@@ -84,13 +85,29 @@ public void onCreatePreferences(Bundle bundle, String s) {
8485

8586
}
8687

87-
if (preferences.getSmsActivation()) {
88-
((SwitchPreference) findPreference(PreferenceManager.SMS_ACTIVE)).setChecked(true);
89-
}
88+
SwitchPreference switchPreference =
89+
(SwitchPreference) findPreference(PreferenceManager.REMOTE_NOTIFICATION_ACTIVE);
90+
91+
switchPreference.setChecked(preferences.isRemoteNotificationActive());
92+
93+
switchPreference.setOnPreferenceChangeListener((preference, newValue) -> {
94+
// user wants to enable/disable remote notification
95+
96+
boolean enabled = (Boolean) newValue;
97+
98+
if (enabled && !canSendRemoteNotification()) {
99+
collectDataForRemoteNotification();
100+
}
101+
102+
preferences.setRemoteNotificationActive(enabled && canSendRemoteNotification());
103+
switchPreference.setChecked(enabled && canSendRemoteNotification());
90104

91-
findPreference(PreferenceManager.SMS_NUMBER).setOnPreferenceClickListener(preference -> {
92-
if (preferences.getSmsNumber().isEmpty()) {
93-
((EditTextPreference) findPreference(PreferenceManager.SMS_NUMBER)).setText(getCountryCode());
105+
return false;
106+
});
107+
108+
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).setOnPreferenceClickListener(preference -> {
109+
if (preferences.getRemotePhoneNumber().isEmpty()) {
110+
((EditTextPreference) findPreference(PreferenceManager.REMOTE_PHONE_NUMBER)).setText(getCountryCode());
94111
}
95112
return false;
96113
});
@@ -101,11 +118,12 @@ public void onCreatePreferences(Bundle bundle, String s) {
101118
return false;
102119
});
103120

104-
if (checkValidString(preferences.getSmsNumber())) {
105-
((EditTextPreference) findPreference(PreferenceManager.SMS_NUMBER)).setText(preferences.getSmsNumber().trim());
106-
findPreference(PreferenceManager.SMS_NUMBER).setSummary(preferences.getSmsNumber().trim());
121+
if (checkValidString(preferences.getRemotePhoneNumber())) {
122+
((EditTextPreference) findPreference(PreferenceManager.REMOTE_PHONE_NUMBER))
123+
.setText(preferences.getRemotePhoneNumber());
124+
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).setSummary(preferences.getRemotePhoneNumber());
107125
} else {
108-
findPreference(PreferenceManager.SMS_NUMBER).setSummary(R.string.sms_dialog_summary);
126+
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).setSummary(R.string.sms_dialog_summary);
109127
}
110128

111129
if (preferences.getRemoteAccessActive()) {
@@ -202,6 +220,41 @@ public void onCreatePreferences(Bundle bundle, String s) {
202220

203221
}
204222

223+
private boolean canSendRemoteNotification() {
224+
String remotePhoneNumber = preferences.getRemotePhoneNumber();
225+
String signalUsername = preferences.getSignalUsername();
226+
return !remotePhoneNumber.isEmpty() && !getCountryCode().equalsIgnoreCase(remotePhoneNumber) &&
227+
!TextUtils.isEmpty(signalUsername) && !getCountryCode().equalsIgnoreCase(signalUsername);
228+
}
229+
230+
/**
231+
* Collect data required for Remote notification with Signal.
232+
* We need a remote phone number and a verified signal Username.
233+
*/
234+
@SuppressLint("RestrictedApi")
235+
private void collectDataForRemoteNotification() {
236+
String remotePhoneNumber = preferences.getRemotePhoneNumber();
237+
if (remotePhoneNumber.isEmpty() || getCountryCode().equalsIgnoreCase(remotePhoneNumber)) {
238+
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).performClick();
239+
}
240+
String signalUsername = preferences.getSignalUsername();
241+
if (TextUtils.isEmpty(signalUsername)) {
242+
findPreference(PreferenceManager.REGISTER_SIGNAL).performClick();
243+
} else {
244+
activateSignal(signalUsername, null);
245+
}
246+
}
247+
248+
private void onRemoteNotificationParameterChange() {
249+
SwitchPreference switchPreference =
250+
(SwitchPreference) findPreference(PreferenceManager.REMOTE_NOTIFICATION_ACTIVE);
251+
252+
boolean remoteNotificationActive = canSendRemoteNotification();
253+
preferences.setRemoteNotificationActive(remoteNotificationActive);
254+
255+
switchPreference.setChecked(remoteNotificationActive);
256+
}
257+
205258
@Override
206259
public boolean onOptionsItemSelected(MenuItem item) {
207260
switch (item.getItemId()) {
@@ -230,6 +283,10 @@ protected void save() {
230283

231284
preferences.setSignalUsername(((EditTextPreference) findPreference(PreferenceManager.REGISTER_SIGNAL)).getText());
232285

286+
boolean remoteNotificationActive =
287+
((SwitchPreference) findPreference(PreferenceManager.REMOTE_NOTIFICATION_ACTIVE)).isChecked();
288+
preferences.setRemoteNotificationActive(remoteNotificationActive);
289+
233290
boolean remoteAccessActive = ((SwitchPreference) findPreference(PreferenceManager.REMOTE_ACCESS_ACTIVE)).isChecked();
234291

235292
preferences.activateRemoteAccess(remoteAccessActive);
@@ -320,10 +377,6 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
320377

321378
}
322379
break;
323-
case PreferenceManager.SMS_ACTIVE:
324-
325-
setPhoneNumber();
326-
break;
327380
case PreferenceManager.REMOTE_ACCESS_ACTIVE:
328381
boolean remoteAccessActive = ((SwitchPreference) findPreference(PreferenceManager.REMOTE_ACCESS_ACTIVE)).isChecked();
329382
if (remoteAccessActive) {
@@ -348,19 +401,17 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
348401
preferences.setSignalUsername("");
349402
findPreference(PreferenceManager.REGISTER_SIGNAL).setSummary(R.string.register_signal_desc);
350403
}
404+
onRemoteNotificationParameterChange();
351405
break;
352406
case PreferenceManager.VERIFY_SIGNAL: {
353407
String text = ((EditTextPreference) findPreference(PreferenceManager.VERIFY_SIGNAL)).getText();
354408
activateSignal(preferences.getSignalUsername(), text);
409+
onRemoteNotificationParameterChange();
355410
break;
356411
}
357-
case PreferenceManager.SMS_NUMBER:
358-
boolean smsActive = ((SwitchPreference) findPreference(PreferenceManager.SMS_ACTIVE)).isChecked();
359-
if (smsActive && TextUtils.isEmpty(preferences.getSignalUsername())) {
360-
askForPermission(Manifest.permission.SEND_SMS, 6);
361-
askForPermission(Manifest.permission.READ_PHONE_STATE, 6);
362-
}
412+
case PreferenceManager.REMOTE_PHONE_NUMBER:
363413
setPhoneNumber();
414+
onRemoteNotificationParameterChange();
364415
break;
365416
case PreferenceManager.NOTIFICATION_TIME:
366417
try
@@ -471,20 +522,14 @@ private void setDefaultStoragePath () {
471522
}
472523

473524
private void setPhoneNumber() {
474-
boolean smsActive = ((SwitchPreference) findPreference(PreferenceManager.SMS_ACTIVE)).isChecked();
475-
String phoneNumber = ((EditTextPreference) findPreference(PreferenceManager.SMS_NUMBER)).getText();
476-
if (smsActive && checkValidString(phoneNumber)) {
477-
preferences.activateSms(true);
478-
} else {
479-
preferences.activateSms(false);
480-
}
525+
String phoneNumber = ((EditTextPreference) findPreference(PreferenceManager.REMOTE_PHONE_NUMBER)).getText();
481526

482527
if (checkValidString(phoneNumber) && !getCountryCode().equalsIgnoreCase(phoneNumber)) {
483-
preferences.setSmsNumber(phoneNumber.trim());
484-
findPreference(PreferenceManager.SMS_NUMBER).setSummary(phoneNumber.trim());
528+
preferences.setRemotePhoneNumber(phoneNumber.trim());
529+
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).setSummary(phoneNumber.trim());
485530
} else if (!getCountryCode().equalsIgnoreCase(phoneNumber)){
486-
preferences.setSmsNumber("");
487-
findPreference(PreferenceManager.SMS_NUMBER).setSummary(R.string.sms_dialog_message);
531+
preferences.setRemotePhoneNumber("");
532+
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).setSummary(R.string.sms_dialog_message);
488533
}
489534
}
490535

src/main/java/org/havenapp/main/service/MonitorService.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ else if (mPrefs.getNotificationTimeMs() > 0 && mLastNotification != null)
365365

366366
SignalSender sender = SignalSender.getInstance(this, mPrefs.getSignalUsername());
367367
ArrayList<String> recips = new ArrayList<>();
368-
StringTokenizer st = new StringTokenizer(mPrefs.getSmsNumber(), ",");
368+
StringTokenizer st = new StringTokenizer(mPrefs.getRemotePhoneNumber(), ",");
369369
while (st.hasMoreTokens())
370370
recips.add(st.nextToken());
371371

@@ -380,13 +380,6 @@ else if (eventTrigger.getType() == EventTrigger.CAMERA_VIDEO) {
380380
}
381381

382382
sender.sendMessage(recips, alertMessage.toString(), attachment);
383-
} else if (mPrefs.getSmsActivation()) {
384-
SmsManager manager = SmsManager.getDefault();
385-
386-
StringTokenizer st = new StringTokenizer(mPrefs.getSmsNumber(), ",");
387-
while (st.hasMoreTokens())
388-
manager.sendTextMessage(st.nextToken(), null, alertMessage.toString(), null, null);
389-
390383
}
391384
}
392385

src/main/java/org/havenapp/main/service/SignalSender.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,8 @@ private void initHbMessage (String message)
165165
if (!TextUtils.isEmpty(mUsername)) {
166166
getInstance(mContext, mUsername.trim());
167167
ArrayList<String> recipient = new ArrayList<>();
168-
recipient.add(preferences.getSmsNumber());
168+
recipient.add(preferences.getRemotePhoneNumber());
169169
sendMessage(recipient, message,null);
170-
} else if (!TextUtils.isEmpty(preferences.getSmsNumber())) {
171-
SmsManager manager = SmsManager.getDefault();
172-
StringTokenizer st = new StringTokenizer(preferences.getSmsNumber(),",");
173-
while (st.hasMoreTokens())
174-
manager.sendTextMessage(st.nextToken(), null, message, null, null);
175170
}
176171

177172
mAlertCount ++; //moved outside of the send functions for now

src/main/java/org/havenapp/main/ui/CustomSlideNotify.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
*/
66

77

8-
import android.Manifest;
98
import android.content.pm.PackageManager;
109
import android.os.Bundle;
1110
import android.text.TextUtils;
@@ -18,6 +17,7 @@
1817
import org.havenapp.main.PreferenceManager;
1918
import org.havenapp.main.R;
2019

20+
import androidx.annotation.NonNull;
2121
import androidx.annotation.Nullable;
2222
import androidx.core.app.ActivityCompat;
2323
import androidx.core.content.ContextCompat;
@@ -62,25 +62,24 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
6262
mEditNumber = view.findViewById(R.id.editNumber);
6363
mEditNumber.setOnClickListener(new View.OnClickListener() {
6464
@Override
65-
public void onClick(View v) {
66-
askForPermission(Manifest.permission.SEND_SMS,6);
67-
askForPermission(Manifest.permission.READ_PHONE_STATE,6);
68-
69-
}
65+
public void onClick(View v) { }
7066
});
7167
PreferenceManager pm = new PreferenceManager(getActivity());
72-
if (!TextUtils.isEmpty(pm.getSmsNumber()))
73-
mEditNumber.setText(pm.getSmsNumber());
68+
if (!TextUtils.isEmpty(pm.getRemotePhoneNumber()))
69+
mEditNumber.setText(pm.getRemotePhoneNumber());
70+
71+
// todo describe why we are asking this maybe
7472

7573
Button button = view.findViewById(R.id.btnSaveNumber);
7674
button.setOnClickListener(mListener);
7775
return view;
7876

7977
}
8078

79+
@NonNull
8180
public String getPhoneNumber ()
8281
{
83-
return mEditNumber.getText().toString();
82+
return mEditNumber.getText() != null ? mEditNumber.getText().toString() : "";
8483
}
8584

8685
private void askForPermission(String permission, Integer requestCode) {

src/main/java/org/havenapp/main/ui/PPAppIntro.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ public void onClick(View v) {
5959
@Override
6060
public void onClick(View v) {
6161
PreferenceManager pm = new PreferenceManager(PPAppIntro.this);
62-
pm.activateSms(true);
63-
pm.setSmsNumber(cs4.getPhoneNumber());
62+
pm.setRemotePhoneNumber(cs4.getPhoneNumber());
6463
Toast.makeText(PPAppIntro.this, R.string.phone_saved,Toast.LENGTH_SHORT).show();
6564
getPager().setCurrentItem(getPager().getCurrentItem()+1);
6665
}

src/main/res/values-de/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
Verzögerungszeit setzen
1818
</string>
1919

20-
<string name="sms_label">"Bei Alarm SMS oder Signal Nachricht senden "</string>
20+
<string name="remote_notification_label">"Bei Alarm SMS oder Signal Nachricht senden "</string>
2121

2222
<string name="sms_hint">+4917712345678</string>
2323

src/main/res/values-es/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
Temporizador
1818
</string>
1919

20-
<string name="sms_label">
20+
<string name="remote_notification_label">
2121
Enviar SMS o mensaje de alerta por Signal
2222
</string>
2323

0 commit comments

Comments
 (0)