Commit 289cccce authored by Sajal Narang's avatar Sajal Narang

Request storage permission at runtime, fix #69

parent af1997cb
package in.ac.iitb.gymkhana.iitbapp; package in.ac.iitb.gymkhana.iitbapp;
public class Constants { public class Constants {
public static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 1;
public static final int MY_PERMISSIONS_REQUEST_ACCESS_LOCATION = 2;
public static final int RESULT_LOAD_IMAGE = 11;
public static final String NOTIFICATIONS_RESPONSE_JSON = "notifications_json"; public static final String NOTIFICATIONS_RESPONSE_JSON = "notifications_json";
public static final String EVENT_JSON = "event_json"; public static final String EVENT_JSON = "event_json";
public static final java.lang.String USER_ID = "user_id"; public static final java.lang.String USER_ID = "user_id";
......
package in.ac.iitb.gymkhana.iitbapp; package in.ac.iitb.gymkhana.iitbapp;
import android.Manifest; import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
...@@ -48,6 +49,9 @@ import retrofit2.Call; ...@@ -48,6 +49,9 @@ import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
import static in.ac.iitb.gymkhana.iitbapp.Constants.MY_PERMISSIONS_REQUEST_ACCESS_LOCATION;
import static in.ac.iitb.gymkhana.iitbapp.Constants.MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE;
import static in.ac.iitb.gymkhana.iitbapp.Constants.RESULT_LOAD_IMAGE;
import static in.ac.iitb.gymkhana.iitbapp.SessionManager.SESSION_ID; import static in.ac.iitb.gymkhana.iitbapp.SessionManager.SESSION_ID;
...@@ -226,7 +230,7 @@ public class MainActivity extends AppCompatActivity ...@@ -226,7 +230,7 @@ public class MainActivity extends AppCompatActivity
== PackageManager.PERMISSION_GRANTED) { == PackageManager.PERMISSION_GRANTED) {
updateFragment(mapFragment); updateFragment(mapFragment);
} else { } else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0); ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_ACCESS_LOCATION);
} }
break; break;
...@@ -260,15 +264,34 @@ public class MainActivity extends AppCompatActivity ...@@ -260,15 +264,34 @@ public class MainActivity extends AppCompatActivity
transaction.commit(); transaction.commit();
} }
public void onRequestPermissionsResult(int requestCode, public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
String[] permissions, switch (requestCode) {
int[] grantResults) { case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // If request is cancelled, the result arrays are empty.
MapFragment mapFragment = new MapFragment(); if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
updateFragment(mapFragment); Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
} else { startActivityForResult(i, RESULT_LOAD_IMAGE);
Toast toast = Toast.makeText(MainActivity.this, "Need Permission", Toast.LENGTH_SHORT); }
toast.show(); return;
case MY_PERMISSIONS_REQUEST_ACCESS_LOCATION:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
MapFragment mapFragment = new MapFragment();
updateFragment(mapFragment);
} else {
Toast toast = Toast.makeText(MainActivity.this, "Need Permission", Toast.LENGTH_SHORT);
toast.show();
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
fragment.onActivityResult(requestCode, resultCode, data);
for (Fragment subfragment : fragment.getChildFragmentManager().getFragments()) {
subfragment.onActivityResult(requestCode, resultCode, data);
}
} }
} }
} }
package in.ac.iitb.gymkhana.iitbapp.fragment; package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.Manifest;
import android.app.DatePickerDialog; import android.app.DatePickerDialog;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.app.TimePickerDialog; import android.app.TimePickerDialog;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor; import android.database.Cursor;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.util.Base64; import android.util.Base64;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
...@@ -47,11 +51,12 @@ import retrofit2.Response; ...@@ -47,11 +51,12 @@ import retrofit2.Response;
import static android.app.Activity.RESULT_OK; import static android.app.Activity.RESULT_OK;
import static android.content.ContentValues.TAG; import static android.content.ContentValues.TAG;
import static in.ac.iitb.gymkhana.iitbapp.Constants.MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE;
import static in.ac.iitb.gymkhana.iitbapp.Constants.RESULT_LOAD_IMAGE;
import static in.ac.iitb.gymkhana.iitbapp.SessionManager.SESSION_ID; import static in.ac.iitb.gymkhana.iitbapp.SessionManager.SESSION_ID;
public class AddEventFragment extends Fragment { public class AddEventFragment extends Fragment {
private static final int RESULT_LOAD_IMAGE = 1;
@BindView(R.id.button_createEvent) @BindView(R.id.button_createEvent)
Button createEvent; Button createEvent;
@BindView(R.id.tv_start) @BindView(R.id.tv_start)
...@@ -213,6 +218,11 @@ public class AddEventFragment extends Fragment { ...@@ -213,6 +218,11 @@ public class AddEventFragment extends Fragment {
imageButton.setOnClickListener(new View.OnClickListener() { imageButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
return;
}
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE); startActivityForResult(i, RESULT_LOAD_IMAGE);
} }
...@@ -226,8 +236,6 @@ public class AddEventFragment extends Fragment { ...@@ -226,8 +236,6 @@ public class AddEventFragment extends Fragment {
sendImage(); sendImage();
} }
}); });
return view; return view;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment