From c89ce40c4fd27e74dc202809a0dfa2aa811ad043 Mon Sep 17 00:00:00 2001 From: Gerben Droogers Date: Thu, 12 Oct 2017 22:50:09 +0200 Subject: [PATCH 1/2] Ask permissions in the app but not all at the same time #6 --- .../eu/droogers/smsmatrix/MainActivity.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java b/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java index e38cadf..8efdfba 100644 --- a/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java +++ b/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java @@ -1,9 +1,11 @@ package eu.droogers.smsmatrix; +import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -25,6 +27,7 @@ public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + checkPermissions(); sp = getSharedPreferences("settings", Context.MODE_PRIVATE); botUsername = (EditText) findViewById(R.id.editText_botUsername); @@ -44,6 +47,7 @@ public class MainActivity extends Activity { saveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + checkPermissions(); SharedPreferences.Editor editor = sp.edit(); editor.putString("botUsername", botUsername.getText().toString()); editor.putString("botPassword", botPassword.getText().toString()); @@ -59,6 +63,20 @@ public class MainActivity extends Activity { startService(); } + private void checkPermissions() { + askPermission(Manifest.permission.SEND_SMS); + askPermission(Manifest.permission.READ_PHONE_STATE); + askPermission(Manifest.permission.READ_CONTACTS); + askPermission(Manifest.permission.READ_EXTERNAL_STORAGE); + + } + + private void askPermission(String permission) { + if (getApplicationContext().checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { + this.requestPermissions(new String[]{permission},1); + } + } + private void startService() { Intent intent = new Intent(this, MatrixService.class); startService(intent); From 2bbabc9ce4652a253c0f9aa7a04315ceb8f27d87 Mon Sep 17 00:00:00 2001 From: Gerben Droogers Date: Thu, 12 Oct 2017 23:36:26 +0200 Subject: [PATCH 2/2] Dynamic long polling intervals #11 --- .../eu/droogers/smsmatrix/MainActivity.java | 8 +++++ .../java/eu/droogers/smsmatrix/Matrix.java | 10 ++++-- .../eu/droogers/smsmatrix/MatrixService.java | 8 +++-- app/src/main/res/layout/activity_main.xml | 34 +++++++++++++++++++ 4 files changed, 55 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java b/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java index 8efdfba..e23c76b 100644 --- a/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java +++ b/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java @@ -22,6 +22,8 @@ public class MainActivity extends Activity { private EditText username; private EditText device; private EditText hsUrl; + private EditText syncDelay; + private EditText syncTimeout; @Override protected void onCreate(Bundle savedInstanceState) { @@ -35,12 +37,16 @@ public class MainActivity extends Activity { username = (EditText) findViewById(R.id.editText_username); device = (EditText) findViewById(R.id.editText_device); hsUrl = (EditText) findViewById(R.id.editText_hsUrl); + syncDelay = (EditText) findViewById(R.id.editText_syncDelay); + syncTimeout = (EditText) findViewById(R.id.editText_syncTimeout); botUsername.setText(sp.getString("botUsername", "")); botPassword.setText(sp.getString("botPassword", "")); username.setText(sp.getString("username", "")); device.setText(sp.getString("device", "")); hsUrl.setText(sp.getString("hsUrl", "")); + syncDelay.setText(sp.getString("syncDelay", "")); + syncTimeout.setText(sp.getString("syncTimeout", "")); Button saveButton = (Button) findViewById(R.id.button_save); @@ -54,6 +60,8 @@ public class MainActivity extends Activity { editor.putString("username", username.getText().toString()); editor.putString("device", device.getText().toString()); editor.putString("hsUrl", hsUrl.getText().toString()); + editor.putString("syncDelay", syncDelay.getText().toString()); + editor.putString("syncTimeout", syncTimeout.getText().toString()); editor.apply(); Log.e(TAG, "onClick: " + botUsername.getText().toString() ); diff --git a/app/src/main/java/eu/droogers/smsmatrix/Matrix.java b/app/src/main/java/eu/droogers/smsmatrix/Matrix.java index ef6a45f..360218a 100644 --- a/app/src/main/java/eu/droogers/smsmatrix/Matrix.java +++ b/app/src/main/java/eu/droogers/smsmatrix/Matrix.java @@ -41,6 +41,8 @@ import static android.content.ContentValues.TAG; */ public class Matrix { + private final int syncDelay; + private final int syncTimeout; HomeServerConnectionConfig hsConfig; Context context; MXSession session; @@ -56,7 +58,7 @@ public class Matrix { private String realUserid; - public Matrix (final Context context, String url, String botUsername, String botPassword, String username, String device) { + public Matrix(final Context context, String url, String botUsername, String botPassword, String username, String device, String syncDelay, String syncTimeout) { this.context = context; hsConfig = new HomeServerConnectionConfig(Uri.parse(url)); @@ -64,6 +66,8 @@ public class Matrix { deviceName = device; this.botUsername = botUsername; botHSUrl = url; + this.syncDelay = Integer.parseInt(syncDelay); + this.syncTimeout = Integer.parseInt(syncTimeout); login(botUsername, botPassword); } @@ -99,8 +103,8 @@ public class Matrix { // NetworkConnectivityReceiver nwMan = new NetworkConnectivityReceiver(); session = new MXSession(hsConfig, dh, context); - session.setSyncDelay(12000); - session.setSyncTimeout(30*60*1000); + session.setSyncDelay(syncDelay * 1000); + session.setSyncTimeout(syncTimeout * 60 * 1000); Log.e(TAG, "onLogin:" + session.getSyncTimeout()); diff --git a/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java b/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java index cc1b111..1e29f60 100644 --- a/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java +++ b/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java @@ -21,6 +21,8 @@ public class MatrixService extends Service { private String username; private String device; private String hsUrl; + private String syncDelay; + private String syncTimeout; @Override public void onCreate() { @@ -35,9 +37,11 @@ public class MatrixService extends Service { username = sp.getString("username", ""); device = sp.getString("device", ""); hsUrl = sp.getString("hsUrl", ""); + syncDelay = sp.getString("syncDelay", ""); + syncTimeout = sp.getString("syncTimeout", ""); - if (mx == null && !botUsername.isEmpty() && !botPassword.isEmpty() && !username.isEmpty() && !device.isEmpty() && !hsUrl.isEmpty()) { - mx = new Matrix(getApplication(), hsUrl, botUsername, botPassword, username, device); + if (mx == null && !botUsername.isEmpty() && !botPassword.isEmpty() && !username.isEmpty() && !device.isEmpty() && !hsUrl.isEmpty() && !syncDelay.isEmpty() && !syncTimeout.isEmpty()) { + mx = new Matrix(getApplication(), hsUrl, botUsername, botPassword, username, device, syncDelay, syncTimeout); Log.e(TAG, "onStartCommand222: " + hsUrl ); Toast.makeText(this, "service starting:", Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 4830c46..b386f52 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -100,6 +100,40 @@ android:hint="Sms_mobiel" android:inputType="textPersonName" /> + + + + + + + +