diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml
index df817b82..92a252d9 100755
--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -1,26 +1,55 @@
-
-
-
-
-
-
-
-
-
-
-
+ package="org.purplei2p.i2pd"
+ android:installLocation="auto"
+ android:versionCode="1"
+ android:versionName="2.18.0">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
-
+
+
\ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
index c270e809..8c730dc5 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -19,7 +19,6 @@ repositories {
dependencies {
compile 'com.android.support:support-v4:25.3.1'
- compile 'com.android.support:design:25.3.1'
}
android {
@@ -33,6 +32,7 @@ android {
versionName "2.18.0"
ndk {
abiFilters 'armeabi-v7a'
+ //abiFilters 'x86'
}
}
sourceSets {
@@ -65,3 +65,4 @@ android {
}
}
+
diff --git a/android/res/layout/activity_perms_explanation.xml b/android/res/layout/activity_perms_explanation.xml
new file mode 100644
index 00000000..1c9cce82
--- /dev/null
+++ b/android/res/layout/activity_perms_explanation.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml
index 1421b261..a0cc264c 100755
--- a/android/res/values/strings.xml
+++ b/android/res/values/strings.xml
@@ -14,4 +14,5 @@
i2pd: graceful shutdown in progress
i2pd has stopped
remaining
+ Prompt
diff --git a/android/src/org/purplei2p/i2pd/I2PDActivity.java b/android/src/org/purplei2p/i2pd/I2PDActivity.java
index d829bd06..99672eb7 100755
--- a/android/src/org/purplei2p/i2pd/I2PDActivity.java
+++ b/android/src/org/purplei2p/i2pd/I2PDActivity.java
@@ -12,14 +12,13 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
-import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
-public class I2PDActivity extends AppCompatActivity {
+public class I2PDActivity extends Activity {
private static final String TAG = "i2pdActvt";
public static final int GRACEFUL_DELAY_MILLIS = 10 * 60 * 1000;
diff --git a/android/src/org/purplei2p/i2pd/I2PDPermsAskerActivity.java b/android/src/org/purplei2p/i2pd/I2PDPermsAskerActivity.java
index 5462ab24..2506f703 100644
--- a/android/src/org/purplei2p/i2pd/I2PDPermsAskerActivity.java
+++ b/android/src/org/purplei2p/i2pd/I2PDPermsAskerActivity.java
@@ -6,15 +6,13 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
-import android.support.design.widget.Snackbar;
-import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
//dangerous perms, per https://developer.android.com/guide/topics/permissions/normal-permissions.html :
//android.permission.WRITE_EXTERNAL_STORAGE
-public class I2PDPermsAskerActivity extends AppCompatActivity {
+public class I2PDPermsAskerActivity extends Activity {
private static final int PERMISSION_WRITE_EXTERNAL_STORAGE = 0;
@@ -58,16 +56,7 @@ public class I2PDPermsAskerActivity extends AppCompatActivity {
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
- Snackbar.make(mLayout, "SD card write access is required to write the keys and other files to the I2PD folder on SD card.",
- Snackbar.LENGTH_INDEFINITE).setAction("OK", new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- // Request the permission
- ActivityCompat.requestPermissions(I2PDPermsAskerActivity.this,
- new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
- PERMISSION_WRITE_EXTERNAL_STORAGE);
- }
- }).show();
+ showExplanation();
} else {
@@ -118,4 +107,24 @@ public class I2PDPermsAskerActivity extends AppCompatActivity {
startActivity(new Intent(this, I2PDActivity.class));
finish();
}
+
+ private static final int SHOW_EXPLANATION_REQUEST = 1; // The request code
+ private void showExplanation() {
+ Intent intent = new Intent(this, I2PDPermsExplanationActivity.class);
+ startActivityForResult(intent, SHOW_EXPLANATION_REQUEST);
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ // Check which request we're responding to
+ if (requestCode == SHOW_EXPLANATION_REQUEST) {
+ // Make sure the request was successful
+ if (resultCode == RESULT_OK) {
+ // Request the permission
+ ActivityCompat.requestPermissions(I2PDPermsAskerActivity.this,
+ new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
+ PERMISSION_WRITE_EXTERNAL_STORAGE);
+ }
+ }
+ }
}
diff --git a/android/src/org/purplei2p/i2pd/I2PDPermsExplanationActivity.java b/android/src/org/purplei2p/i2pd/I2PDPermsExplanationActivity.java
new file mode 100644
index 00000000..8ca3d425
--- /dev/null
+++ b/android/src/org/purplei2p/i2pd/I2PDPermsExplanationActivity.java
@@ -0,0 +1,36 @@
+package org.purplei2p.i2pd;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.View;
+import android.widget.Button;
+
+public class I2PDPermsExplanationActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_perms_explanation);
+ //getActionBar().setDisplayHomeAsUpEnabled(true);
+ Button button_ok = (Button) findViewById(R.id.button_ok);
+ button_ok.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ returnFromActivity();
+ }
+ });
+ }
+
+ private void returnFromActivity() {
+ Intent data = new Intent();
+ Activity parent = getParent();
+ if (parent == null) {
+ setResult(Activity.RESULT_OK, data);
+ } else {
+ parent.setResult(Activity.RESULT_OK, data);
+ }
+ finish();
+ }
+
+}