diff app/src/main/java/com/five_ten_sg/connectbot/HostListActivity.java @ 465:7c8aebcc882a

request permissions if not already granted
author Carl Byington <carl@five-ten-sg.com>
date Mon, 19 Aug 2019 11:12:40 -0700
parents 105815cce146
children 12e2d9dd95df
line wrap: on
line diff
--- a/app/src/main/java/com/five_ten_sg/connectbot/HostListActivity.java	Sun Apr 28 18:26:39 2019 -0700
+++ b/app/src/main/java/com/five_ten_sg/connectbot/HostListActivity.java	Mon Aug 19 11:12:40 2019 -0700
@@ -70,6 +70,11 @@
 import android.widget.ListView;
 import android.widget.Spinner;
 import android.widget.TextView;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.Manifest;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
 
 public class HostListActivity extends ListActivity {
     protected static final String TAG = "ConnectBot.HostListActivity";
@@ -168,6 +173,15 @@
                                     getResources().getText(R.string.title_hosts_list)));
         this.prefs = PreferenceManager.getDefaultSharedPreferences(this);
 
+        // ask for permissions, must match AndroidManifest.xml
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            String [] perms = {Manifest.permission.INTERNET,
+                               Manifest.permission.ACCESS_NETWORK_STATE,
+                               Manifest.permission.WAKE_LOCK,
+                               Manifest.permission.WRITE_EXTERNAL_STORAGE};
+            checkp(perms);
+        }
+
         // detect HTC Dream and apply special preferences
         if (Build.MANUFACTURER.equals("HTC") && Build.DEVICE.equals("dream")) {
             if (!prefs.contains(PreferenceConstants.SHIFT_FKEYS) &&
@@ -252,6 +266,16 @@
         this.inflater = LayoutInflater.from(this);
     }
 
+    public void checkp(String [] perms) {
+        boolean need = false;
+        for (String perm : perms) {
+            if (ContextCompat.checkSelfPermission(this, perm) != PackageManager.PERMISSION_GRANTED) {
+                need = true;
+            }
+        }
+        if (need) ActivityCompat.requestPermissions(this, perms, 1);
+    }
+
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
         super.onPrepareOptionsMenu(menu);