From 8c7952f04c9dae02f0c38c992e631db4c4156fde Mon Sep 17 00:00:00 2001 From: fpeterfalvi <fpeterfalvi@gmail.com> Date: Mon, 30 Apr 2018 18:42:24 +0200 Subject: [PATCH] Storage permission is requested in runtime. --- .../java/onlab/kvizserver/GameActivity.java | 20 +++++++++++ .../java/onlab/kvizserver/MainActivity.java | 36 +++++++++++++++++-- .../kvizserver/QuestionListFragment.java | 17 ++++++--- 3 files changed, 66 insertions(+), 7 deletions(-) diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java b/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java index 8f864f0..9ef05ee 100644 --- a/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java +++ b/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java @@ -1,5 +1,6 @@ package onlab.kvizserver; +import android.content.pm.PackageManager; import android.os.Handler; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; @@ -10,6 +11,7 @@ import android.widget.Toast; import com.google.gson.Gson; import com.rustamg.filedialogs.FileDialog; +import com.rustamg.filedialogs.SaveFileDialog; import java.io.BufferedReader; import java.io.BufferedWriter; @@ -318,4 +320,22 @@ public class GameActivity extends AppCompatActivity implements GameControlFragme questionListFragment.refreshQuestionList(); } + @Override + public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { + switch (requestCode) { + case 1: { + // If request is cancelled, the result arrays are empty. + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + // permission was granted + SaveFileDialog dialog = new SaveFileDialog(); + dialog.show(getSupportFragmentManager(), SaveFileDialog.class.getName()); + } else { + // permission denied + } + return; + } + } + } + } diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/MainActivity.java b/KvizServer/app/src/main/java/onlab/kvizserver/MainActivity.java index 374ca5f..22e350d 100644 --- a/KvizServer/app/src/main/java/onlab/kvizserver/MainActivity.java +++ b/KvizServer/app/src/main/java/onlab/kvizserver/MainActivity.java @@ -1,8 +1,12 @@ package onlab.kvizserver; +import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; @@ -56,8 +60,18 @@ public class MainActivity extends AppCompatActivity implements FileDialog.OnFile ChooseQuestionFileBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - FileDialog dialog = new OpenFileDialog(); - dialog.show(getSupportFragmentManager(), OpenFileDialog.class.getName()); + if (ContextCompat.checkSelfPermission(MainActivity.this, + Manifest.permission.READ_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED) { + + // Permission is not granted; request the permission + ActivityCompat.requestPermissions(MainActivity.this, + new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); + } else { + // Permission has already been granted + FileDialog dialog = new OpenFileDialog(); + dialog.show(getSupportFragmentManager(), OpenFileDialog.class.getName()); + } } }); @@ -133,4 +147,22 @@ public class MainActivity extends AppCompatActivity implements FileDialog.OnFile } } + @Override + public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { + switch (requestCode) { + case 1: { + // If request is cancelled, the result arrays are empty. + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + // permission was granted + FileDialog dialog = new OpenFileDialog(); + dialog.show(getSupportFragmentManager(), OpenFileDialog.class.getName()); + } else { + // permission denied + } + return; + } + } + } + } diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/QuestionListFragment.java b/KvizServer/app/src/main/java/onlab/kvizserver/QuestionListFragment.java index f3bd0d3..b2d5934 100644 --- a/KvizServer/app/src/main/java/onlab/kvizserver/QuestionListFragment.java +++ b/KvizServer/app/src/main/java/onlab/kvizserver/QuestionListFragment.java @@ -9,6 +9,7 @@ import android.support.v4.app.ActivityCompat; import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; +import android.support.v4.content.ContextCompat; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -66,11 +67,17 @@ public class QuestionListFragment extends Fragment { exportButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - ActivityCompat.requestPermissions(getActivity(), - new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, - 1); - SaveFileDialog dialog = new SaveFileDialog(); - dialog.show(getActivity().getSupportFragmentManager(), SaveFileDialog.class.getName()); + if (ContextCompat.checkSelfPermission(getActivity(), + Manifest.permission.WRITE_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED) { + // Permission is not granted; request the permission + ActivityCompat.requestPermissions(getActivity(), + new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); + } else { + // Permission has already been granted + SaveFileDialog dialog = new SaveFileDialog(); + dialog.show(getActivity().getSupportFragmentManager(), SaveFileDialog.class.getName()); + } } }); -- GitLab