[tor-commits] [orbot/master] feedback

n8fr8 at torproject.org n8fr8 at torproject.org
Thu Mar 2 04:10:20 UTC 2017


commit 11e663be67685f845364d7af1514173441f32b3b
Author: arrase <arrase at gmail.com>
Date:   Sun Nov 20 22:51:36 2016 +0100

    feedback
---
 .../android/ui/hs/HiddenServicesActivity.java           | 17 +++++++++++++++++
 .../android/ui/hs/dialogs/HSActionsDialog.java          | 10 ++++++++--
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java b/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java
index 26889d0..80b7e81 100644
--- a/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java
+++ b/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java
@@ -1,8 +1,12 @@
 package org.torproject.android.ui.hs;
 
 
+import android.Manifest;
+import android.annotation.SuppressLint;
 import android.content.ContentResolver;
+import android.content.pm.PackageManager;
 import android.database.ContentObserver;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.design.widget.FloatingActionButton;
@@ -82,6 +86,10 @@ public class HiddenServicesActivity extends AppCompatActivity {
                 Bundle arguments = new Bundle();
                 arguments.putString("port", port.getText().toString());
                 arguments.putString("onion", onion.getText().toString());
+                boolean has_write_permission = true;
+                if (usesRuntimePermissions())
+                    has_write_permission = hasPermission();
+                arguments.putBoolean("has_write_permissions", has_write_permission);
 
                 HSActionsDialog dialog = new HSActionsDialog();
                 dialog.setArguments(arguments);
@@ -89,4 +97,13 @@ public class HiddenServicesActivity extends AppCompatActivity {
             }
         });
     }
+
+    private boolean usesRuntimePermissions() {
+        return (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1);
+    }
+
+    @SuppressLint("NewApi")
+    private boolean hasPermission() {
+        return (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
+    }
 }
diff --git a/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSActionsDialog.java b/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSActionsDialog.java
index f490586..8d6ad37 100644
--- a/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSActionsDialog.java
+++ b/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSActionsDialog.java
@@ -32,10 +32,16 @@ public class HSActionsDialog extends DialogFragment {
                 .setTitle(R.string.hidden_services)
                 .create();
 
-        Button save = (Button) dialog_view.findViewById(R.id.btn_hs_backup);
-        save.setOnClickListener(new View.OnClickListener() {
+        Button backup = (Button) dialog_view.findViewById(R.id.btn_hs_backup);
+        backup.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 Context mContext = v.getContext();
+
+                if (!arguments.getBoolean("has_write_permissions")) {
+                    Toast.makeText(mContext, R.string.please_grant_permissions_for_external_storage, Toast.LENGTH_LONG).show();
+                    return;
+                }
+
                 HiddenServiceUtils hsutils = new HiddenServiceUtils(mContext);
                 String backupPath = hsutils.createOnionBackup(Integer.parseInt(arguments.getString("port")));
 





More information about the tor-commits mailing list