diff --git a/app/build.gradle b/app/build.gradle index 5efbaa1..5f7ab0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,6 +26,8 @@ android { } dependencies { + implementation 'com.android.support:appcompat-v7:26.0.0' + compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' diff --git a/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java b/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java index 41babb8..8c2334e 100644 --- a/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java +++ b/app/src/main/java/eu/droogers/smsmatrix/MainActivity.java @@ -12,6 +12,15 @@ import android.view.View; import android.widget.Button; import android.widget.EditText; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; + +import static android.Manifest.permission.READ_CONTACTS; +import static android.Manifest.permission.READ_EXTERNAL_STORAGE; +import static android.Manifest.permission.READ_PHONE_STATE; +import static android.Manifest.permission.READ_SMS; +import static android.Manifest.permission.RECEIVE_SMS; +import static android.Manifest.permission.SEND_SMS; import static android.content.ContentValues.TAG; public class MainActivity extends Activity { @@ -24,12 +33,15 @@ public class MainActivity extends Activity { private EditText hsUrl; private EditText syncDelay; private EditText syncTimeout; + private static final String[] PERMISSIONS_REQUIRED = new String[]{ + READ_SMS, SEND_SMS, RECEIVE_SMS, READ_PHONE_STATE, READ_CONTACTS, READ_EXTERNAL_STORAGE + }; + private static final int PERMISSION_REQUEST_CODE = 200; @Override 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); @@ -53,40 +65,48 @@ 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()); - 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(); + if (!checkPermissions()) { + askPermissions(); + } else { + SharedPreferences.Editor editor = sp.edit(); + editor.putString("botUsername", botUsername.getText().toString()); + editor.putString("botPassword", botPassword.getText().toString()); + 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() ); + startService(); + } - Log.e(TAG, "onClick: " + botUsername.getText().toString() ); - startService(); } }); - startService(); + if (!checkPermissions()) { + askPermissions(); + } else { + startService(); + } } - private void checkPermissions() { - askPermission(Manifest.permission.READ_SMS); - askPermission(Manifest.permission.SEND_SMS); - askPermission(Manifest.permission.RECEIVE_SMS); - askPermission(Manifest.permission.READ_PHONE_STATE); - askPermission(Manifest.permission.READ_CONTACTS); - askPermission(Manifest.permission.READ_EXTERNAL_STORAGE); - + private boolean checkPermissions() { + for (String permission: PERMISSIONS_REQUIRED) { + int result = ContextCompat.checkSelfPermission(getApplicationContext(), permission); + if (result != PackageManager.PERMISSION_GRANTED) { + return false; + } + Log.i(TAG, "setOnClickListener - result result result" + result); + } + return true; } - private void askPermission(String permission) { - if (getApplicationContext().checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { - this.requestPermissions(new String[]{permission},1); - } + private void askPermissions() { + ActivityCompat.requestPermissions(this, PERMISSIONS_REQUIRED, PERMISSION_REQUEST_CODE); } + private void startService() { Intent intent = new Intent(this, MatrixService.class); startService(intent);