Skip to content

Commit

Permalink
Merge branch 'remove_sms_support' of https://github.com/archie94/haven
Browse files Browse the repository at this point in the history
…into archie94-remove_sms_support
  • Loading branch information
n8fr8 committed Feb 28, 2019
2 parents 693db02 + 4226024 commit 3057027
Show file tree
Hide file tree
Showing 20 changed files with 126 additions and 99 deletions.
1 change: 0 additions & 1 deletion src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<uses-feature
Expand Down
11 changes: 1 addition & 10 deletions src/main/java/org/havenapp/main/ListActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -368,17 +368,8 @@ private void testNotifications ()
if (!TextUtils.isEmpty(preferences.getSignalUsername())) {
SignalSender sender = SignalSender.getInstance(this, preferences.getSignalUsername().trim());
ArrayList<String> recip = new ArrayList<>();
recip.add(preferences.getSmsNumber());
recip.add(preferences.getRemotePhoneNumber());
sender.sendMessage(recip, resourceManager.getString(R.string.signal_test_message), null);
}
else if (!TextUtils.isEmpty(preferences.getSmsNumber())) {

SmsManager manager = SmsManager.getDefault();

StringTokenizer st = new StringTokenizer(preferences.getSmsNumber(),",");
while (st.hasMoreTokens())
manager.sendTextMessage(st.nextToken(), null, resourceManager.getString(R.string.signal_test_message), null, null);

}
}
}
40 changes: 23 additions & 17 deletions src/main/java/org/havenapp/main/PreferenceManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,17 @@
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.text.TextUtils;

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

import java.io.File;
import java.util.Date;
import java.util.Objects;

import javax.annotation.Nullable;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;


Expand Down Expand Up @@ -62,12 +67,9 @@ public class PreferenceManager {
private static final String MICROPHONE_SENSITIVITY="microphone_sensitivity";
public static final String CONFIG_SOUND = "config_sound";
public static final String CONFIG_TIME_DELAY = "config_delay_time";
public static final String SMS_ACTIVE = "sms_active";
public static final String SMS_NUMBER = "sms_number";
public static final String REGISTER_SIGNAL = "register_signal";
public static final String VERIFY_SIGNAL = "verify_signal";
public static final String VOICE_VERIFY_SIGNAL = "voice_verify_signal";
public static final String SEND_SMS = "send_sms";
private static final String UNLOCK_CODE="unlock_code";

private static final String ACCESS_TOKEN="access_token";
Expand Down Expand Up @@ -96,6 +98,10 @@ public class PreferenceManager {
public static final String CONFIG_BASE_STORAGE = "config_base_storage";
private static final String CONFIG_BASE_STORAGE_DEFAULT = "/haven";

// keeping the key value same for data migration.
static final String REMOTE_PHONE_NUMBER = "sms_number";
static final String REMOTE_NOTIFICATION_ACTIVE = "remote_notification_active";

private Context context;

public PreferenceManager(Context context) {
Expand Down Expand Up @@ -242,24 +248,24 @@ public void setMicrophoneSensitivity(String sensitivity) {
public String getMicrophoneSensitivity() {
return appSharedPrefs.getString(MICROPHONE_SENSITIVITY, MEDIUM);
}
public void activateSms(boolean active) {
prefsEditor.putBoolean(SMS_ACTIVE, active);
prefsEditor.commit();

public void setRemoteNotificationActive(boolean isRemoteNotificationActive) {
prefsEditor.putBoolean(REMOTE_NOTIFICATION_ACTIVE, isRemoteNotificationActive);
prefsEditor.apply();
}
public boolean getSmsActivation() {
return appSharedPrefs.getBoolean(SMS_ACTIVE, false);

public boolean isRemoteNotificationActive() {
return appSharedPrefs.getBoolean(REMOTE_NOTIFICATION_ACTIVE, false);
}

public void setSmsNumber(String number) {

prefsEditor.putString(SMS_NUMBER, number);
prefsEditor.commit();
public void setRemotePhoneNumber(@NonNull String remotePhoneNumber) {
prefsEditor.putString(REMOTE_PHONE_NUMBER, remotePhoneNumber.trim());
prefsEditor.apply();
}

public String getSmsNumber() {
return appSharedPrefs.getString(SMS_NUMBER, "");

@NonNull
public String getRemotePhoneNumber() {
return Objects.requireNonNull(appSharedPrefs.getString(REMOTE_PHONE_NUMBER, ""));
}

public int getTimerDelay ()
Expand Down
107 changes: 76 additions & 31 deletions src/main/java/org/havenapp/main/SettingsFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
*/

import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
Expand Down Expand Up @@ -84,13 +85,29 @@ public void onCreatePreferences(Bundle bundle, String s) {

}

if (preferences.getSmsActivation()) {
((SwitchPreference) findPreference(PreferenceManager.SMS_ACTIVE)).setChecked(true);
}
SwitchPreference switchPreference =
(SwitchPreference) findPreference(PreferenceManager.REMOTE_NOTIFICATION_ACTIVE);

switchPreference.setChecked(preferences.isRemoteNotificationActive());

switchPreference.setOnPreferenceChangeListener((preference, newValue) -> {
// user wants to enable/disable remote notification

boolean enabled = (Boolean) newValue;

if (enabled && !canSendRemoteNotification()) {
collectDataForRemoteNotification();
}

preferences.setRemoteNotificationActive(enabled && canSendRemoteNotification());
switchPreference.setChecked(enabled && canSendRemoteNotification());

findPreference(PreferenceManager.SMS_NUMBER).setOnPreferenceClickListener(preference -> {
if (preferences.getSmsNumber().isEmpty()) {
((EditTextPreference) findPreference(PreferenceManager.SMS_NUMBER)).setText(getCountryCode());
return false;
});

findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).setOnPreferenceClickListener(preference -> {
if (preferences.getRemotePhoneNumber().isEmpty()) {
((EditTextPreference) findPreference(PreferenceManager.REMOTE_PHONE_NUMBER)).setText(getCountryCode());
}
return false;
});
Expand All @@ -101,11 +118,12 @@ public void onCreatePreferences(Bundle bundle, String s) {
return false;
});

if (checkValidString(preferences.getSmsNumber())) {
((EditTextPreference) findPreference(PreferenceManager.SMS_NUMBER)).setText(preferences.getSmsNumber().trim());
findPreference(PreferenceManager.SMS_NUMBER).setSummary(preferences.getSmsNumber().trim());
if (checkValidString(preferences.getRemotePhoneNumber())) {
((EditTextPreference) findPreference(PreferenceManager.REMOTE_PHONE_NUMBER))
.setText(preferences.getRemotePhoneNumber());
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).setSummary(preferences.getRemotePhoneNumber());
} else {
findPreference(PreferenceManager.SMS_NUMBER).setSummary(R.string.sms_dialog_summary);
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).setSummary(R.string.sms_dialog_summary);
}

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

}

private boolean canSendRemoteNotification() {
String remotePhoneNumber = preferences.getRemotePhoneNumber();
String signalUsername = preferences.getSignalUsername();
return !remotePhoneNumber.isEmpty() && !getCountryCode().equalsIgnoreCase(remotePhoneNumber) &&
!TextUtils.isEmpty(signalUsername) && !getCountryCode().equalsIgnoreCase(signalUsername);
}

/**
* Collect data required for Remote notification with Signal.
* We need a remote phone number and a verified signal Username.
*/
@SuppressLint("RestrictedApi")
private void collectDataForRemoteNotification() {
String remotePhoneNumber = preferences.getRemotePhoneNumber();
if (remotePhoneNumber.isEmpty() || getCountryCode().equalsIgnoreCase(remotePhoneNumber)) {
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).performClick();
}
String signalUsername = preferences.getSignalUsername();
if (TextUtils.isEmpty(signalUsername)) {
findPreference(PreferenceManager.REGISTER_SIGNAL).performClick();
} else {
activateSignal(signalUsername, null);
}
}

private void onRemoteNotificationParameterChange() {
SwitchPreference switchPreference =
(SwitchPreference) findPreference(PreferenceManager.REMOTE_NOTIFICATION_ACTIVE);

boolean remoteNotificationActive = canSendRemoteNotification();
preferences.setRemoteNotificationActive(remoteNotificationActive);

switchPreference.setChecked(remoteNotificationActive);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
Expand Down Expand Up @@ -230,6 +283,10 @@ protected void save() {

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

boolean remoteNotificationActive =
((SwitchPreference) findPreference(PreferenceManager.REMOTE_NOTIFICATION_ACTIVE)).isChecked();
preferences.setRemoteNotificationActive(remoteNotificationActive);

boolean remoteAccessActive = ((SwitchPreference) findPreference(PreferenceManager.REMOTE_ACCESS_ACTIVE)).isChecked();

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

}
break;
case PreferenceManager.SMS_ACTIVE:

setPhoneNumber();
break;
case PreferenceManager.REMOTE_ACCESS_ACTIVE:
boolean remoteAccessActive = ((SwitchPreference) findPreference(PreferenceManager.REMOTE_ACCESS_ACTIVE)).isChecked();
if (remoteAccessActive) {
Expand All @@ -348,19 +401,17 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
preferences.setSignalUsername("");
findPreference(PreferenceManager.REGISTER_SIGNAL).setSummary(R.string.register_signal_desc);
}
onRemoteNotificationParameterChange();
break;
case PreferenceManager.VERIFY_SIGNAL: {
String text = ((EditTextPreference) findPreference(PreferenceManager.VERIFY_SIGNAL)).getText();
activateSignal(preferences.getSignalUsername(), text);
onRemoteNotificationParameterChange();
break;
}
case PreferenceManager.SMS_NUMBER:
boolean smsActive = ((SwitchPreference) findPreference(PreferenceManager.SMS_ACTIVE)).isChecked();
if (smsActive && TextUtils.isEmpty(preferences.getSignalUsername())) {
askForPermission(Manifest.permission.SEND_SMS, 6);
askForPermission(Manifest.permission.READ_PHONE_STATE, 6);
}
case PreferenceManager.REMOTE_PHONE_NUMBER:
setPhoneNumber();
onRemoteNotificationParameterChange();
break;
case PreferenceManager.NOTIFICATION_TIME:
try
Expand Down Expand Up @@ -471,20 +522,14 @@ private void setDefaultStoragePath () {
}

private void setPhoneNumber() {
boolean smsActive = ((SwitchPreference) findPreference(PreferenceManager.SMS_ACTIVE)).isChecked();
String phoneNumber = ((EditTextPreference) findPreference(PreferenceManager.SMS_NUMBER)).getText();
if (smsActive && checkValidString(phoneNumber)) {
preferences.activateSms(true);
} else {
preferences.activateSms(false);
}
String phoneNumber = ((EditTextPreference) findPreference(PreferenceManager.REMOTE_PHONE_NUMBER)).getText();

if (checkValidString(phoneNumber) && !getCountryCode().equalsIgnoreCase(phoneNumber)) {
preferences.setSmsNumber(phoneNumber.trim());
findPreference(PreferenceManager.SMS_NUMBER).setSummary(phoneNumber.trim());
preferences.setRemotePhoneNumber(phoneNumber.trim());
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).setSummary(phoneNumber.trim());
} else if (!getCountryCode().equalsIgnoreCase(phoneNumber)){
preferences.setSmsNumber("");
findPreference(PreferenceManager.SMS_NUMBER).setSummary(R.string.sms_dialog_message);
preferences.setRemotePhoneNumber("");
findPreference(PreferenceManager.REMOTE_PHONE_NUMBER).setSummary(R.string.sms_dialog_message);
}
}

Expand Down
9 changes: 1 addition & 8 deletions src/main/java/org/havenapp/main/service/MonitorService.java
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ else if (mPrefs.getNotificationTimeMs() > 0 && mLastNotification != null)

SignalSender sender = SignalSender.getInstance(this, mPrefs.getSignalUsername());
ArrayList<String> recips = new ArrayList<>();
StringTokenizer st = new StringTokenizer(mPrefs.getSmsNumber(), ",");
StringTokenizer st = new StringTokenizer(mPrefs.getRemotePhoneNumber(), ",");
while (st.hasMoreTokens())
recips.add(st.nextToken());

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

sender.sendMessage(recips, alertMessage.toString(), attachment);
} else if (mPrefs.getSmsActivation()) {
SmsManager manager = SmsManager.getDefault();

StringTokenizer st = new StringTokenizer(mPrefs.getSmsNumber(), ",");
while (st.hasMoreTokens())
manager.sendTextMessage(st.nextToken(), null, alertMessage.toString(), null, null);

}
}

Expand Down
7 changes: 1 addition & 6 deletions src/main/java/org/havenapp/main/service/SignalSender.java
Original file line number Diff line number Diff line change
Expand Up @@ -165,13 +165,8 @@ private void initHbMessage (String message)
if (!TextUtils.isEmpty(mUsername)) {
getInstance(mContext, mUsername.trim());
ArrayList<String> recipient = new ArrayList<>();
recipient.add(preferences.getSmsNumber());
recipient.add(preferences.getRemotePhoneNumber());
sendMessage(recipient, message,null);
} else if (!TextUtils.isEmpty(preferences.getSmsNumber())) {
SmsManager manager = SmsManager.getDefault();
StringTokenizer st = new StringTokenizer(preferences.getSmsNumber(),",");
while (st.hasMoreTokens())
manager.sendTextMessage(st.nextToken(), null, message, null, null);
}

mAlertCount ++; //moved outside of the send functions for now
Expand Down
17 changes: 8 additions & 9 deletions src/main/java/org/havenapp/main/ui/CustomSlideNotify.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
*/


import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
Expand All @@ -18,6 +17,7 @@
import org.havenapp.main.PreferenceManager;
import org.havenapp.main.R;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
Expand Down Expand Up @@ -62,25 +62,24 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
mEditNumber = view.findViewById(R.id.editNumber);
mEditNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
askForPermission(Manifest.permission.SEND_SMS,6);
askForPermission(Manifest.permission.READ_PHONE_STATE,6);

}
public void onClick(View v) { }
});
PreferenceManager pm = new PreferenceManager(getActivity());
if (!TextUtils.isEmpty(pm.getSmsNumber()))
mEditNumber.setText(pm.getSmsNumber());
if (!TextUtils.isEmpty(pm.getRemotePhoneNumber()))
mEditNumber.setText(pm.getRemotePhoneNumber());

// todo describe why we are asking this maybe

Button button = view.findViewById(R.id.btnSaveNumber);
button.setOnClickListener(mListener);
return view;

}

@NonNull
public String getPhoneNumber ()
{
return mEditNumber.getText().toString();
return mEditNumber.getText() != null ? mEditNumber.getText().toString() : "";
}

private void askForPermission(String permission, Integer requestCode) {
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/org/havenapp/main/ui/PPAppIntro.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,7 @@ public void onClick(View v) {
@Override
public void onClick(View v) {
PreferenceManager pm = new PreferenceManager(PPAppIntro.this);
pm.activateSms(true);
pm.setSmsNumber(cs4.getPhoneNumber());
pm.setRemotePhoneNumber(cs4.getPhoneNumber());
Toast.makeText(PPAppIntro.this, R.string.phone_saved,Toast.LENGTH_SHORT).show();
getPager().setCurrentItem(getPager().getCurrentItem()+1);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
Verzögerungszeit setzen
</string>

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

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

Expand Down
2 changes: 1 addition & 1 deletion src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
Temporizador
</string>

<string name="sms_label">
<string name="remote_notification_label">
Enviar SMS o mensaje de alerta por Signal
</string>

Expand Down
Loading

0 comments on commit 3057027

Please sign in to comment.