Skip to content

Commit 4a0a859

Browse files
authoredOct 23, 2017
Merge pull request #3 from MrCsabaToth/master
Fixing #2 by asking for permission
2 parents 1d59f2d + 7295220 commit 4a0a859

File tree

2 files changed

+59
-20
lines changed

2 files changed

+59
-20
lines changed
 

‎src/main/java/com/github/androidify/PlaceholderFragment.java

+58-20
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.github.androidify;
22

33
import android.content.Intent;
4+
import android.content.pm.PackageManager;
45
import android.graphics.Bitmap;
56
import android.net.Uri;
67
import android.os.Bundle;
78
import android.provider.MediaStore;
9+
import android.support.annotation.NonNull;
810
import android.support.v4.app.Fragment;
911
import android.support.v4.app.FragmentManager;
12+
import android.support.v4.content.ContextCompat;
1013
import android.support.v4.view.ViewPager;
1114
import android.view.LayoutInflater;
1215
import android.view.MotionEvent;
@@ -19,21 +22,26 @@ public class PlaceholderFragment extends Fragment {
1922
private final String mySound = "my_recorded_sound";
2023
private AndroidSoundRecorder soundRecorder;
2124
private AndroidSoundPlayer soundPlayer;
25+
private ViewPager mViewPagerHead;
26+
private ViewPager mViewPagerBody;
27+
private ViewPager mViewPagerLegs;
28+
29+
private static final int WRITE_EXTERNAL_STORAGE = 1;
2230

2331
@Override
2432
public View onCreateView(LayoutInflater inflater, ViewGroup container,
2533
Bundle savedInstanceState) {
2634
final View rootView = inflater.inflate(R.layout.fragment_main, container, false);
27-
final ViewPager viewPagerHead = (ViewPager) rootView.findViewById(R.id.viewPagerHead);
28-
final ViewPager viewPagerBody = (ViewPager) rootView.findViewById(R.id.viewPagerBody);
29-
final ViewPager viewPagerLegs = (ViewPager) rootView.findViewById(R.id.viewPagerLegs);
35+
mViewPagerHead = (ViewPager) rootView.findViewById(R.id.viewPagerHead);
36+
mViewPagerBody = (ViewPager) rootView.findViewById(R.id.viewPagerBody);
37+
mViewPagerLegs = (ViewPager) rootView.findViewById(R.id.viewPagerLegs);
3038

3139
FragmentManager fm = getActivity().getSupportFragmentManager();
32-
viewPagerHead.setAdapter(new AndroidifyViewPagerAdapter(fm, AndroidDrawables.getHeads()));
33-
viewPagerBody.setAdapter(new AndroidifyViewPagerAdapter(fm, AndroidDrawables.getBodies()));
34-
viewPagerLegs.setAdapter(new AndroidifyViewPagerAdapter(fm, AndroidDrawables.getLegs()));
40+
mViewPagerHead.setAdapter(new AndroidifyViewPagerAdapter(fm, AndroidDrawables.getHeads()));
41+
mViewPagerBody.setAdapter(new AndroidifyViewPagerAdapter(fm, AndroidDrawables.getBodies()));
42+
mViewPagerLegs.setAdapter(new AndroidifyViewPagerAdapter(fm, AndroidDrawables.getLegs()));
3543

36-
initShareButton(rootView, viewPagerHead, viewPagerBody, viewPagerLegs);
44+
initShareButton(rootView);
3745
initPlayButton(rootView);
3846
initRecordButton(rootView);
3947

@@ -81,29 +89,52 @@ public boolean onTouch(View view, MotionEvent motionEvent) {
8189
});
8290
}
8391

84-
private void initShareButton(View rootView, final ViewPager viewPagerHead, final ViewPager viewPagerBody, final ViewPager viewPagerLegs) {
92+
private void initShareButton(View rootView) {
8593
View shareButton = rootView.findViewById(R.id.button_share);
8694
shareButton.setOnClickListener(new View.OnClickListener() {
8795
@Override
8896
public void onClick(View view) {
89-
Integer head = AndroidDrawables.getHeads().get(viewPagerHead.getCurrentItem());
90-
Integer body = AndroidDrawables.getBodies().get(viewPagerBody.getCurrentItem());
91-
Integer legs = AndroidDrawables.getLegs().get(viewPagerLegs.getCurrentItem());
92-
93-
Bitmap bitmap = BitmapUtils.combineDrawables(getResources(), head, body, legs);
97+
int permissionCheck = ContextCompat.checkSelfPermission(getActivity(),
98+
android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
9499

95-
String imagePath = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), bitmap, "Android Avatar", null);
96-
Uri imageURI = Uri.parse(imagePath);
97-
startShareActivity(imageURI);
100+
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
101+
requestPermissions(
102+
new String[] { android.Manifest.permission.WRITE_EXTERNAL_STORAGE },
103+
WRITE_EXTERNAL_STORAGE);
104+
} else {
105+
share();
106+
}
98107
}
99108
});
100109
}
101110

102111
@Override
103-
public void onPause() {
104-
super.onPause();
105-
soundRecorder.stopRecording();
106-
soundPlayer.stopPlaying();
112+
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
113+
switch (requestCode) {
114+
115+
case WRITE_EXTERNAL_STORAGE:
116+
if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
117+
share();
118+
}
119+
break;
120+
121+
default:
122+
break;
123+
}
124+
}
125+
126+
private void share() {
127+
Integer head = AndroidDrawables.getHeads().get(mViewPagerHead.getCurrentItem());
128+
Integer body = AndroidDrawables.getBodies().get(mViewPagerBody.getCurrentItem());
129+
Integer legs = AndroidDrawables.getLegs().get(mViewPagerLegs.getCurrentItem());
130+
131+
Bitmap bitmap = BitmapUtils.combineDrawables(getResources(), head, body, legs);
132+
133+
String imagePath = MediaStore.Images.Media.insertImage(
134+
getActivity().getContentResolver(), bitmap,
135+
getResources().getString(R.string.android_avatar), null);
136+
Uri imageURI = Uri.parse(imagePath);
137+
startShareActivity(imageURI);
107138
}
108139

109140
private void startShareActivity(Uri imageURI) {
@@ -115,4 +146,11 @@ private void startShareActivity(Uri imageURI) {
115146

116147
startActivity(shareIntent);
117148
}
149+
150+
@Override
151+
public void onPause() {
152+
super.onPause();
153+
soundRecorder.stopRecording();
154+
soundPlayer.stopPlaying();
155+
}
118156
}

‎src/main/res/values/strings.xml

+1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
<string name="app_name">My Module</string>
55
<string name="action_settings">Settings</string>
66
<string name="create_your_android">Create your Android</string>
7+
<string name="android_avatar">Android Avatar</string>
78

89
</resources>

0 commit comments

Comments
 (0)
Please sign in to comment.