android.os.fileuriexposedexception:,android.os.FileUriExposedException:file.jpg通过Clip...

我尝试按下一个打开相机并拍照的按钮.我的代码在这里

//for imports check on bottom of this code block

public class HomeProfileActivity extends AppCompatActivity {

//Button camera

public static final String TAG = HomeProfileActivity.class.getSimpleName();

public static final int REQUEST_TAKE_PHOTO = 0;

public static final int REQUEST_TAKE_VIDEO = 1;

public static final int REQUEST_PICK_PHOTO = 2;

public static final int REQUEST_PICK_VIDEO = 3;

public static final int MEDIA_TYPE_IMAGE = 4;

public static final int MEDIA_TYPE_VIDEO = 5;

private Uri mMediaUri;

private ImageView photobutton;

private Button buttonUploadImage, buttonTakeImage;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_home_profile);

ButterKnife.bind(this);

}

@OnClick(R.id.buttonTakeImage)

void takePhoto() {

mMediaUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);

if (mMediaUri == null) {

Toast.makeText(this,

"There was a problem accessing your device's external storage.",

Toast.LENGTH_LONG).show();

}

else {

Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, mMediaUri);

startActivityForResult(takePhotoIntent, REQUEST_TAKE_PHOTO);

}

}

@Override

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

super.onActivityResult(requestCode, resultCode, data);

if (resultCode == RESULT_OK){

if (requestCode == REQUEST_TAKE_PHOTO) {

Intent intent = new Intent(this, ViewImageActivity.class);

intent.setData(mMediaUri);

startActivity(intent);

}

}

else if (resultCode != RESULT_CANCELED){

Toast.makeText(this, "Sorry, there was an error", Toast.LENGTH_SHORT).show();

}

}

private Uri getOutputMediaFileUri(int mediaType) {

// check for external storage

if (isExternalStorageAvailable()) {

// get the URI

// 1. Get the external storage directory

File mediaStorageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);

// 2. Create a unique file name

String fileName = "";

String fileType = "";

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());

if (mediaType == MEDIA_TYPE_IMAGE) {

fileName = "IMG_" + timeStamp;

fileType = ".jpg";

} else if (mediaType == MEDIA_TYPE_VIDEO) {

fileName = "VID_" + timeStamp;

fileType = ".mp4";

} else {

return null;

}

// 3. Create the file

File mediaFile;

try {

mediaFile = File.createTempFile(fileName, fileType, mediaStorageDir);

Log.i(TAG, "File: " + Uri.fromFile(mediaFile));

// 4. Return the file's URI

return Uri.fromFile(mediaFile);

}

catch (IOException e) {

Log.e(TAG, "Error creating file: " +

mediaStorageDir.getAbsolutePath() + fileName + fileType);

}

}

// something went wrong

return null;

}

private boolean isExternalStorageAvailable(){

String state = Environment.getExternalStorageState();

if (Environment.MEDIA_MOUNTED.equals(state)){

return true;

}

else {

return false;

}

}

import android.content.Intent;

import android.content.SharedPreferences;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.provider.MediaStore;

import android.support.annotation.NonNull;

import android.support.design.widget.BottomNavigationView;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

import java.io.File;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import butterknife.ButterKnife;

import butterknife.OnClick;

我在方法onclick中的startActivityForResult也有问题

和import java.text.SimpleDateFormat;也跳转到异常运行时

我正在使用buildtoolsversion sdk 25

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值