Skip to content

Commit 165cfdb

Browse files
committed
头像data问题
1 parent e55668d commit 165cfdb

File tree

1 file changed

+41
-3
lines changed

1 file changed

+41
-3
lines changed

module-user/src/main/java/com/rae/cnblogs/user/activity/AvatarActivity.java

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import android.provider.MediaStore;
1414
import android.support.annotation.Nullable;
1515
import android.support.v4.content.FileProvider;
16+
import android.text.TextUtils;
1617
import android.util.Log;
1718
import android.view.View;
1819
import android.view.ViewGroup;
@@ -32,7 +33,9 @@
3233
import com.rae.cnblogs.user.personal.UserAvatarPresenterImpl;
3334

3435
import java.io.File;
36+
import java.io.FileNotFoundException;
3537
import java.io.FileOutputStream;
38+
import java.io.IOException;
3639
import java.io.OutputStream;
3740
import java.util.ArrayList;
3841

@@ -128,18 +131,53 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
128131
}
129132

130133
// 图片裁剪返回
131-
if (resultCode == RESULT_OK && (requestCode == REQUEST_CODE_CROP || requestCode == REQUEST_CODE_CROP_FILE_PROVIDER) && data != null && data.getData() != null) {
132-
String path = data.getData().getPath();
133-
Log.i("rae", "路径为:" + data.getData());
134+
if (resultCode == RESULT_OK && (requestCode == REQUEST_CODE_CROP || requestCode == REQUEST_CODE_CROP_FILE_PROVIDER) && data != null) {
135+
String path = getResultImageData(data);
136+
if (TextUtils.isEmpty(path)) {
137+
UICompat.failed(this, "头像获取失败");
138+
return;
139+
}
140+
Log.i("rae", "路径为:" + path);
134141
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
135142
path = handleContentUri(data.getData());
136143
}
144+
137145
onAvatarImageChanged(path);
138146
handleUpload();
139147
}
140148

141149
}
142150

151+
@Nullable
152+
private String getResultImageData(Intent data) {
153+
Uri uri = data.getData();
154+
if (uri != null) return uri.toString();
155+
if (data.getExtras() == null) return null;
156+
Object objData = data.getExtras().get("data");
157+
if (objData instanceof String) return objData.toString();
158+
if (objData instanceof Bitmap) {
159+
Bitmap bitmap = (Bitmap) objData;
160+
File file = new File(getExternalCacheDir(), "avatar-upload-" + System.currentTimeMillis() + ".png");
161+
OutputStream fileStream = null;
162+
try {
163+
fileStream = new FileOutputStream(file);
164+
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileStream);
165+
return file.getPath();
166+
} catch (FileNotFoundException e) {
167+
e.printStackTrace();
168+
} finally {
169+
if (fileStream != null) {
170+
try {
171+
fileStream.close();
172+
} catch (IOException e) {
173+
e.printStackTrace();
174+
}
175+
}
176+
}
177+
}
178+
return null;
179+
}
180+
143181
private String handleContentUri(Uri uri) {
144182
try {
145183
ParcelFileDescriptor fileDescriptor = this.getContentResolver().openFileDescriptor(uri, "r");

0 commit comments

Comments
 (0)