diff --git a/mobile/build.gradle b/mobile/build.gradle index 34f90306..be5468db 100644 --- a/mobile/build.gradle +++ b/mobile/build.gradle @@ -11,8 +11,8 @@ android { applicationId "nl.jolanrensen.permanentproxy" minSdkVersion 23 targetSdkVersion 29 - versionCode 7 - versionName "3.1" + versionCode 8 + versionName "3.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { diff --git a/wear/build.gradle b/wear/build.gradle index adf5c049..dbc8c74a 100644 --- a/wear/build.gradle +++ b/wear/build.gradle @@ -11,8 +11,8 @@ android { applicationId "nl.jolanrensen.permanentproxy" minSdkVersion 23 targetSdkVersion 29 - versionCode 7 - versionName "3.1" + versionCode 8 + versionName "3.2" } buildTypes { release { diff --git a/wear/release/mobile-release.apk b/wear/release/mobile-release.apk index 009a7a92..0631a177 100644 Binary files a/wear/release/mobile-release.apk and b/wear/release/mobile-release.apk differ diff --git a/wear/release/wear-release.aab b/wear/release/wear-release.aab index e252eadd..545d0614 100644 Binary files a/wear/release/wear-release.aab and b/wear/release/wear-release.aab differ diff --git a/wear/release/wear-release.apk b/wear/release/wear-release.apk index aa3d58da..fb534ff5 100644 Binary files a/wear/release/wear-release.apk and b/wear/release/wear-release.apk differ diff --git a/wear/src/main/AndroidManifest.xml b/wear/src/main/AndroidManifest.xml index 2c66fddf..63407cc9 100644 --- a/wear/src/main/AndroidManifest.xml +++ b/wear/src/main/AndroidManifest.xml @@ -35,7 +35,8 @@ + android:label="@string/title_activity_enable_adbbluetooth"> + @@ -46,6 +47,7 @@ + diff --git a/wear/src/main/java/nl/jolanrensen/permanentproxy/MainActivity.kt b/wear/src/main/java/nl/jolanrensen/permanentproxy/MainActivity.kt index 8cd94369..58b68c34 100644 --- a/wear/src/main/java/nl/jolanrensen/permanentproxy/MainActivity.kt +++ b/wear/src/main/java/nl/jolanrensen/permanentproxy/MainActivity.kt @@ -19,21 +19,18 @@ import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import nl.jolanrensen.permanentproxy.Constants.PORT import nl.jolanrensen.permanentproxy.Constants.currentProxy import nl.jolanrensen.permanentproxy.Constants.getCurrentIP -import nl.jolanrensen.permanentproxy.Constants.logD import nl.jolanrensen.permanentproxy.Constants.logE import nl.jolanrensen.permanentproxy.Constants.startProxy import nl.jolanrensen.permanentproxy.Constants.stopProxy import nl.jolanrensen.permanentproxy.Constants.toastLong -import kotlin.concurrent.thread class MainActivity : WearableActivity() { - var p: SharedPreferences? = null - @Volatile - var currentADBProcess: SendSingleCommand? = null + private var p: SharedPreferences? = null + + val PERMISSION = 23 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -41,6 +38,7 @@ class MainActivity : WearableActivity() { p = getSharedPreferences(packageName, Context.MODE_PRIVATE) + getCurrentIP { logE("current IP is $it") runOnUiThread { @@ -86,47 +84,12 @@ class MainActivity : WearableActivity() { } request_permission.setOnClickListener { - loading.isVisible = true - loading.requestFocus() - thread(start = true) { - val logs = arrayListOf() - try { - currentADBProcess = SendSingleCommand( - logs = logs, - context = this, - ip = "localhost", - port = PORT, - command = "pm grant \\\nnl.jolanrensen.permanentproxy \\\nandroid.permission.WRITE_SECURE_SETTINGS", - timeout = 4000, - ctrlC = false - ) { - currentADBProcess = null - logD(it.toString()) - runOnUiThread { - loading.isVisible = false - if (checkCallingOrSelfPermission("android.permission.WRITE_SECURE_SETTINGS") - == PackageManager.PERMISSION_GRANTED - ) { - continueSetup() - toastLong(getString(R.string.permission_granted)) - } else { - toastLong(getString(R.string.something_wrong)) - } - } - } - } catch (e: Exception) { - currentADBProcess = null - logE("$logs", e) - runOnUiThread { - loading.isVisible = false - toastLong(getString(R.string.something_wrong)) - } - } - } - } + startActivityForResult( + Intent(this, RequestPermissionActivity::class.java), + PERMISSION + + ) - cancel.setOnClickListener { - currentADBProcess?.cancel() } } @@ -302,4 +265,12 @@ class MainActivity : WearableActivity() { if (child is ViewGroup) setAllEnabled(child, *except) } } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + when { + requestCode == PERMISSION && resultCode == RESULT_OK -> { + continueSetup() + } + } + } } diff --git a/wear/src/main/java/nl/jolanrensen/permanentproxy/RequestPermissionActivity.kt b/wear/src/main/java/nl/jolanrensen/permanentproxy/RequestPermissionActivity.kt new file mode 100644 index 00000000..90f4a0d6 --- /dev/null +++ b/wear/src/main/java/nl/jolanrensen/permanentproxy/RequestPermissionActivity.kt @@ -0,0 +1,67 @@ +package nl.jolanrensen.permanentproxy + +import android.app.Activity +import android.content.pm.PackageManager +import android.os.Bundle +import android.support.wearable.activity.WearableActivity +import kotlinx.android.synthetic.main.activity_request_permission.* +import nl.jolanrensen.permanentproxy.Constants.logE +import nl.jolanrensen.permanentproxy.Constants.toastLong +import kotlin.concurrent.thread + +class RequestPermissionActivity : WearableActivity() { + + @Volatile + var currentADBProcess: SendSingleCommand? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_request_permission) + + cancel.setOnClickListener { + finish() + } + + thread(start = true) { + val logs = arrayListOf() + try { + currentADBProcess = SendSingleCommand( + logs = logs, + context = this, + ip = "localhost", + port = Constants.PORT, + command = "pm grant \\\nnl.jolanrensen.permanentproxy \\\nandroid.permission.WRITE_SECURE_SETTINGS", + timeout = 4000, + ctrlC = false + ) { + currentADBProcess = null + Constants.logD(it.toString()) + runOnUiThread { + if (checkCallingOrSelfPermission("android.permission.WRITE_SECURE_SETTINGS") + == PackageManager.PERMISSION_GRANTED + ) { + toastLong(getString(R.string.permission_granted)) + setResult(Activity.RESULT_OK) + } else { + toastLong(getString(R.string.something_wrong)) + } + finish() + } + } + } catch (e: Exception) { + currentADBProcess = null + logE("$logs", e) + runOnUiThread { + toastLong(getString(R.string.something_wrong)) + finish() + } + } + } + } + + override fun onStop() { + currentADBProcess?.cancel() + logE("requesting permission canceled") + super.onStop() + } +} \ No newline at end of file diff --git a/wear/src/main/res/layout/activity_main.xml b/wear/src/main/res/layout/activity_main.xml index 17b39ceb..dd3ce6cc 100644 --- a/wear/src/main/res/layout/activity_main.xml +++ b/wear/src/main/res/layout/activity_main.xml @@ -5,7 +5,7 @@ android:layout_height="match_parent" android:background="@color/black" android:padding="@dimen/box_inset_layout_padding" - tools:context=".MainActivity" + tools:context=".RequestPermissionActivity" tools:deviceIds="wear"> - - - - - - - - - - - - - - \ No newline at end of file diff --git a/wear/src/main/res/layout/activity_request_permission.xml b/wear/src/main/res/layout/activity_request_permission.xml new file mode 100644 index 00000000..cdb064ba --- /dev/null +++ b/wear/src/main/res/layout/activity_request_permission.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file