From 11e663be67685f845364d7af1514173441f32b3b Mon Sep 17 00:00:00 2001 From: arrase Date: Sun, 20 Nov 2016 22:51:36 +0100 Subject: [PATCH] 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 26889d0f..80b7e811 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 f4905868..8d6ad379 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")));