打開相機房铭、相冊、上傳頭像

//添加清單文件依賴

? <uses-permission android:name="android.permission.INTERNET"/>

? ? <uses-permission android:name="android.permission.CAMERA"/>

? ? <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

? ? <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>



/*打開相冊*/

private void initData2() {

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {

//相冊

? ? ? ? openAlbum();

}else {

ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},2000);

}

}

private void openAlbum() {

//啟動相冊

? ? Intent intent =new Intent(Intent.ACTION_PICK);

intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");

startActivityForResult(intent,ALBUM_CODE);

}


/*打開相機*/

private void initData() {

if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {

//相機

? ? ? ? openCamera();

}else {

ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA},1000);

}

}


@RequiresApi(api = Build.VERSION_CODES.FROYO)

private void openCamera() {

//創(chuàng)建文件用于保存圖片getExternalCacheDir

? ? mFile =new File(getExternalCacheDir(), System.currentTimeMillis() +".jpg");

if (!mFile.exists()) {

try {

mFile.createNewFile();

}catch (IOException e) {

e.printStackTrace();

}

}

//適配7.0,? 等到對應(yīng)的mImageUri路徑地址

? ? if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {

mImageUri = Uri.fromFile(mFile);

}else {

//第二個參數(shù)要和清單文件中的配置保持一致

? ? ? ? mImageUri = FileProvider.getUriForFile(this,"com.baidu.upload.provider",mFile);

}

//啟動相機

? ? Intent intent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

intent.putExtra(MediaStore.EXTRA_OUTPUT,mImageUri);//將拍照圖片存入mImageUri

? ? startActivityForResult(intent,CAMERA_CODE);

}


//拍完照片后保存?? 上傳頭像

@Override

protected void onActivityResult(int requestCode,int resultCode,@Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (resultCode ==RESULT_OK) {//判斷回調(diào)成功

? ? ? ? if (requestCode ==CAMERA_CODE) {//拍照

//拍照后的圖片上傳

? ? ? ? ? ? uploadFile(mFile);

}else if (requestCode ==ALBUM_CODE) {//相冊

//獲取到相冊選中后的圖片URI路徑

? ? ? ? ? ? Uri imageUri = data.getData();

//文件上傳温眉,將Uri路徑轉(zhuǎn)換為File對象

//處理uri,7.0以后的fileProvider 把URI 以content provider 方式 對外提供的解析方法

? ? ? ? ? ? File file = getFileFromUri(imageUri,this);

if (file.exists()) {

uploadFile(file);

}

}

}

}

private File getFileFromUri(Uri imageUri, PersonalActivity personalActivity) {

if (imageUri ==null) {

return null;

}

switch (imageUri.getScheme()) {

case "content":

return getFileFromContentUri(imageUri, personalActivity);

case "file":

return new File(imageUri.getPath());

default:

return null;

}

}

private File getFileFromUri(Uri imageUri, PersonalActivity personalActivity) {

if (imageUri ==null) {

return null;

}

switch (imageUri.getScheme()) {

case "content":

return getFileFromContentUri(imageUri, personalActivity);

case "file":

return new File(imageUri.getPath());

default:

return null;

}

}

//OkHttp上傳頭像

private File getFileFromContentUri(Uri imageUri, PersonalActivity personalActivity) {

if (imageUri ==null) {

return null;

}

File file =null;

String filePath;

String[] filePathColumn = {MediaStore.MediaColumns.DATA};

ContentResolver contentResolver = personalActivity.getContentResolver();

Cursor cursor = contentResolver.query(imageUri, filePathColumn,null,

null,null);

if (cursor !=null) {

cursor.moveToFirst();

filePath = cursor.getString(cursor.getColumnIndex(filePathColumn[0]));

cursor.close();

if (!TextUtils.isEmpty(filePath)) {

file =new File(filePath);

}

}

return file;

}

private void uploadFile(File mFile) {

String url ="http://yun918.cn/study/public/file_upload.php";

OkHttpClient client =new OkHttpClient.Builder()

.build();

//? file-->RequestBody

? ? RequestBody requestBody = RequestBody.create(MediaType.parse("image/jpg"), mFile);

// 創(chuàng)建多媒體 請求對象

? ? MultipartBody body =new MultipartBody.Builder()

.setType(MultipartBody.FORM)

.addFormDataPart("key","H1808C")

.addFormDataPart("file", mFile.getName(), requestBody)

.build();

Request request =new Request.Builder()

.url(url)

.post(body)

.build();

Call call = client.newCall(request);

call.enqueue(new Callback() {

@Override

? ? ? ? public void onFailure(Call call, IOException e) {

Log.e(TAG,"onFailure: " + e.getMessage());

}

@Override

? ? ? ? public void onResponse(Call call, Response response)throws IOException {

String string = response.body().string();

Gson gson =new Gson();

final UpLoadPictureBean upLoadBean = gson.fromJson(string, UpLoadPictureBean.class);

runOnUiThread(new Runnable() {

@Override

? ? ? ? ? ? ? ? public void run() {

if (upLoadBean !=null) {

if (upLoadBean.getCode() ==200) {

Toast.makeText(PersonalActivity.this,upLoadBean.getRes(), Toast.LENGTH_SHORT).show();

SpUtil.setParam(Constants.HEADIMG,upLoadBean.getData().getUrl());

Glide.with(PersonalActivity.this).load(upLoadBean.getData().getUrl()).apply(requestOptions).into(mHeadPortrait);

Log.e(TAG,"run: " +upLoadBean.getData().getUrl());

}else {

Toast.makeText(PersonalActivity.this,upLoadBean.getRes(), Toast.LENGTH_SHORT).show();

}

}

}

});

}

});

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缸匪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子类溢,更是在濱河造成了極大的恐慌凌蔬,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闯冷,死亡現(xiàn)場離奇詭異砂心,居然都是意外死亡,警方通過查閱死者的電腦和手機蛇耀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門辩诞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纺涤,你說我怎么就攤上這事躁倒。” “怎么了洒琢?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵秧秉,是天一觀的道長。 經(jīng)常有香客問我衰抑,道長象迎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任呛踊,我火速辦了婚禮砾淌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谭网。我一直安慰自己汪厨,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布愉择。 她就那樣靜靜地躺著劫乱,像睡著了一般织中。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衷戈,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天狭吼,我揣著相機與錄音,去河邊找鬼殖妇。 笑死刁笙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谦趣。 我是一名探鬼主播疲吸,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼前鹅!你這毒婦竟也來了摘悴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤嫡纠,失蹤者是張志新(化名)和其女友劉穎烦租,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體除盏,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡叉橱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了者蠕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窃祝。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖踱侣,靈堂內(nèi)的尸體忽然破棺而出粪小,到底是詐尸還是另有隱情,我是刑警寧澤抡句,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布探膊,位于F島的核電站,受9級特大地震影響待榔,放射性物質(zhì)發(fā)生泄漏逞壁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一锐锣、第九天 我趴在偏房一處隱蔽的房頂上張望腌闯。 院中可真熱鬧,春花似錦雕憔、人聲如沸姿骏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽分瘦。三九已至蘸泻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間擅腰,已是汗流浹背蟋恬。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工翁潘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留趁冈,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓拜马,卻偏偏與公主長得像渗勘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子俩莽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容