if (Build.VERSION.SDK_INT >= 23) {
String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA
};
ActivityCompat.requestPermissions(this, mPermissionList, 123);
}
Intent intentToPickPic = new Intent(Intent.ACTION_PICK, null);
intentToPickPic.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/jpeg");
startActivityForResult(intentToPickPic,1);
相机
/*Intent intentToTakePhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intentToTakePhoto, 1);*/
获取
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
Uri uri = data.getData();
// touxiang.setImageBitmap(bitmap);
fileByUri = getFileByUri(uri, PushPhoto_activity.this);
} /*else if (requestCode == 2) {
}*/
}
日志拦截器
private RetrofitClient() {
Retrofit retrofit = new Retrofit
.Builder()
.baseUrl(Api.BaseApi)
.client(client())
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
dataSevent = retrofit.create(DataSevent.class);
}
private OkHttpClient client() {
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.addInterceptor(new LogginInterceptor());
return builder.build();
}
package com.alearth;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.alearth.api.Api;
import com.alearth.api.IServer;
import com.alearth.bean.PushFile;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.annotation.Target;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observable;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class MineActivity extends AppCompatActivity {
private static final int ALBUM_REQUEST_CODE = 0;
@BindView(R.id.push_img)
TextView pushImg;
/*@BindView(R.id.head_img)
SimpleDraweeView headImg;*/
@BindView(R.id.get_HeadImg)
TextView getHeadImg;
@BindView(R.id.header_Img)
ImageView headerImg;
private Unbinder unbinder;
//
String fileName = "p1.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mine);
unbinder = ButterKnife.bind(this);
}
//获取上传头像
private void getImg() {
}
@OnClick({R.id.push_img, R.id.get_HeadImg})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.push_img:
//upLoadImg();
//获取相册的图片
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, ALBUM_REQUEST_CODE);
//上传头像
break;
case R.id.get_HeadImg:
getImg();
break;
}
}
private void upLoadImg(File targetFile) {
//File targetFile = new File(Environment.getExternalStorageDirectory()+"/Android/p1.jpg");
Log.i("aaa", targetFile+"");
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Api.AD)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
IServer iServer = retrofit.create(IServer.class);
//addFormDataPart()第一个参数为表单名字,这是和后台约定好的
//TODO 第一个重要的对象MultipartBody
MultipartBody.Builder builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("uid", "16926");
//注意,file是后台约定的参数,如果是多图,file[],如果是单张图片,file就行
builder.addFormDataPart("file", targetFile.getName(),
//TODO 第二个重要的对象RequestBody
RequestBody.create(MediaType.parse("image/jpg"),targetFile));
RequestBody requestBody = builder.build();
//开始
Observable <JsonObject> jsonObjectObservable = iServer.pushImg(requestBody);
jsonObjectObservable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber <JsonObject>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.i("jiba","这是失败===="+e.getMessage());
}
@Override
public void onNext(JsonObject jsonObject) {
Log.i("jiba","这是成功的===="+jsonObject.toString());
Gson gson = new Gson();
PushFile pushFile = gson.fromJson(jsonObject.toString(), PushFile.class);
Toast.makeText(MineActivity.this,pushFile.getMsg(),Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case ALBUM_REQUEST_CODE:
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
File file = new File(uri.getPath());
//File fileByUri = getFileByUri(uri, this);
upLoadImg(file);
}
break;
}
}
public static File getFileByUri(Uri uri, Context context) {
String path = null;
if ("file".equals(uri.getScheme())) {
path = uri.getEncodedPath();
if (path != null) {
path = Uri.decode(path);
ContentResolver cr = context.getContentResolver();
StringBuffer buff = new StringBuffer();
buff.append("(").append(MediaStore.Images.ImageColumns.DATA).append("=").append("'" + path + "'").append(")");
Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA}, buff.toString(), null, null);
int index = 0;
int dataIdx = 0;
for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {
index = cur.getColumnIndex(MediaStore.Images.ImageColumns._ID);
index = cur.getInt(index);
dataIdx = cur.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
path = cur.getString(dataIdx);
}
cur.close();
if (index == 0) {
} else {
Uri u = Uri.parse("content://media/external/images/media/" + index);
System.out.println("temp uri is :" + u);
}
}
if (path != null) {
return new File(path);
}
} else if ("content".equals(uri.getScheme())) {
// 4.2.2以后
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = context.getContentResolver().query(uri, proj, null, null, null);
if (cursor.moveToFirst()) {
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
path = cursor.getString(columnIndex);
}
cursor.close();
return new File(path);
} else {
}
return null;
}
@Override
protected void onDestroy() {
if (unbinder != null) {
unbinder.unbind();
}
super.onDestroy();
}
}