# HG changeset patch # User Carl Byington # Date 1566238360 25200 # Node ID 7c8aebcc882a78ea06d5776d970b0107df450748 # Parent 3ebfae9bc0bdb3e83dcc1267ff56b1d60ae5032c request permissions if not already granted diff -r 3ebfae9bc0bd -r 7c8aebcc882a app/src/main/AndroidManifest.xml --- a/app/src/main/AndroidManifest.xml Sun Apr 28 18:26:39 2019 -0700 +++ b/app/src/main/AndroidManifest.xml Mon Aug 19 11:12:40 2019 -0700 @@ -17,10 +17,11 @@ --> + diff -r 3ebfae9bc0bd -r 7c8aebcc882a app/src/main/java/com/five_ten_sg/connectbot/HostListActivity.java --- 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); diff -r 3ebfae9bc0bd -r 7c8aebcc882a app/src/main/java/com/five_ten_sg/connectbot/service/TerminalKeyListener.java --- a/app/src/main/java/com/five_ten_sg/connectbot/service/TerminalKeyListener.java Sun Apr 28 18:26:39 2019 -0700 +++ b/app/src/main/java/com/five_ten_sg/connectbot/service/TerminalKeyListener.java Mon Aug 19 11:12:40 2019 -0700 @@ -142,6 +142,13 @@ try { int repeat = event.getRepeatCount(); + // if keycode debugging enabled, log and print the pressed key + if (prefs.getBoolean(PreferenceConstants.DEBUG_KEYCODES, false)) { + String keyCodeString = String.format(": %d %d %d", keyCode, repeat, event.getAction()); + String toastText = v.getContext().getString(R.string.keycode_pressed) + keyCodeString; + Log.d(TAG, toastText); + } + // skip keys if we aren't connected yet or have been disconnected if (bridge.isDisconnected()) return false; @@ -153,13 +160,6 @@ // There's nothing else here for virtual keyboard users. if (!hardKeyboard || hardKeyboardHidden) return false; - // if keycode debugging enabled, log and print the pressed key - if (prefs.getBoolean(PreferenceConstants.DEBUG_KEYCODES, false)) { - String keyCodeString = String.format(": %d", keyCode); - String toastText = v.getContext().getString(R.string.keycode_pressed) + keyCodeString; - Log.d(TAG, toastText); - } - if (fullKeyboard()) { switch (keyCode) { case KeyEvent.KEYCODE_CTRL_LEFT: @@ -573,14 +573,14 @@ return (handleShortcut(v, hwbuttonShortcut, repeat, down)); case KeyEvent.KEYCODE_VOLUME_UP: - // check to see which shortcut the volume button triggers + // check to see which shortcut the volume up button triggers hwbuttonShortcut = manager.prefs.getString( PreferenceConstants.VOLUP, PreferenceConstants.HWBUTTON_FUNCTION_KEYS); return (handleShortcut(v, hwbuttonShortcut, repeat, down)); case KeyEvent.KEYCODE_VOLUME_DOWN: - // check to see which shortcut the camera button triggers + // check to see which shortcut the volume down button triggers hwbuttonShortcut = manager.prefs.getString( PreferenceConstants.VOLDN, PreferenceConstants.HWBUTTON_TAB); diff -r 3ebfae9bc0bd -r 7c8aebcc882a build.gradle --- a/build.gradle Sun Apr 28 18:26:39 2019 -0700 +++ b/build.gradle Mon Aug 19 11:12:40 2019 -0700 @@ -6,7 +6,7 @@ google() } dependencies { - classpath 'com.android.tools.build:gradle:3.4.0' + classpath 'com.android.tools.build:gradle:3.4.2' } } diff -r 3ebfae9bc0bd -r 7c8aebcc882a xml/510connectbot.in --- a/xml/510connectbot.in Sun Apr 28 18:26:39 2019 -0700 +++ b/xml/510connectbot.in Mon Aug 19 11:12:40 2019 -0700 @@ -29,7 +29,7 @@ - 2019-04-28 + 2019-05-13 Carl Byington @@ -331,7 +331,7 @@ - 2019-04-28 + 2019-05-13 Carl Byington @@ -353,8 +353,8 @@ Description - The deployment.connections file - is show by this example. If this file exists at the top + The deployment.connections sample + file is below. If this file exists at the top level of the external storage (as returned by Environment.getExternalStorageDirectory().getAbsolutePath()), it is read, parsed, and deleted. Comments start with #