裁剪后的照片无法在imageview上显示

「已注销」 2016-10-14 02:21:02
根据书《第一行代码》,我学着在写一个调用手机拍照然后裁剪照片,显示到imageview上的功能。
代码基本都是根据书里来的,没什么变化。
但是我运行程序后,无法在imageview上显示出来裁剪后的照片。
然后我打了log后,发现onActivityResult方法中根本就没有调用过CROP_PHOTO那部分代码。
这是为什么呢?求解答……我哪里没写对啊?好困扰的。

public class MainActivity extends AppCompatActivity {

public static final int TAKE_PHOTO = 1;
public static final int CROP_PHOTO =2;

private Button button;
private ImageView imageView;

private Uri imageUri;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.button);
imageView = (ImageView) findViewById(R.id.imageview);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

File outputImage = new File(Environment.getExternalStorageDirectory(),"tempImage.jpg");
try {
if (outputImage.exists()){
outputImage.delete();
}
outputImage.createNewFile();

} catch (IOException e) {
e.printStackTrace();
}
imageUri = Uri.fromFile(outputImage);

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
startActivityForResult(intent, TAKE_PHOTO);

}
});

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case TAKE_PHOTO:
if (resultCode == RESULT_OK){

Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(imageUri,"image/*");
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
startActivityForResult(intent, CROP_PHOTO);

}
break;
case CROP_PHOTO:
if (resultCode == RESULT_OK){
try {
Log.i("test","CROP_PHOTO");

Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));

imageView.setImageBitmap(bitmap);

} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
break;
}
}
}
...全文
410 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dovar_66 2016-10-19
  • 打赏
  • 举报
回复
魅族手机的照片裁剪问题: http://www.cnblogs.com/over140/archive/2012/12/17/2821874.html
Dovar_66 2016-10-19
  • 打赏
  • 举报
回复
引用 13 楼 Dovar_66 的回复:
[quote=引用 10 楼 tanxixiao8226 的回复:] [quote=引用 6 楼 Dovar_66 的回复:] 检查下权限,如果是6.0以上系统需要动态获取内存读写和相机权限
是5.1版本的 魅蓝note2 权限就是这些权限,有没有问题啊。

<uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
[/quote] 我这边运行会调用截图功能,不过截图返回为空[/quote] 搞错了,把权限开起来之后,你这个代码是没问题的,能截图也能显示
Dovar_66 2016-10-19
  • 打赏
  • 举报
回复
引用 10 楼 tanxixiao8226 的回复:
[quote=引用 6 楼 Dovar_66 的回复:] 检查下权限,如果是6.0以上系统需要动态获取内存读写和相机权限
是5.1版本的 魅蓝note2 权限就是这些权限,有没有问题啊。

<uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
[/quote] 我这边运行会调用截图功能,不过截图返回为空
「已注销」 2016-10-18
  • 打赏
  • 举报
回复
引用 6 楼 Dovar_66 的回复:
检查下权限,如果是6.0以上系统需要动态获取内存读写和相机权限
是5.1版本的 魅蓝note2 权限就是这些权限,有没有问题啊。

<uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
「已注销」 2016-10-18
  • 打赏
  • 举报
回复
引用 5 楼 qq840727854 的回复:
亲测 你的代码 是没有什么问题的 你是运行在什么手机上 什么版本 我试试看可以不
魅蓝note2 系统是android5.1版本的 androidStudio是1.4版本的 在手机上,就是点击拍照后拍照成功了,但是根本就没有调用裁剪功能,拍照后点击确定,直接返回到了我写的联系人界面上。
developerzjy 2016-10-18
  • 打赏
  • 举报
回复
引用 7 楼 Simple_Simple_Simple 的回复:
[quote=引用 4 楼 tanxixiao8226 的回复:] [quote=引用 3 楼 u011182710 的回复:] startActivityForResult(intent, CROP_PHOTO); 有这句应该会回调到case CROP_PHOTO的内容啊 Log.i("test","CROP_PHOTO"); 这句log打出来了没
这句log没有打出来。 这就是我的疑问啊。 应该是能够回调的,可是这句log打不出来。[/quote] 在onActivityResult方法最开始把requestCode用log打出来,可以看出是否回调了onActivityResult,如果回调了再比较log打出来的值和CROP_PHOTO看看条件是否满足。 你这是全部代码?startActivityForResult(intent, TAKE_PHOTO);传的是TAKE_PHOTO,回调不是走case TAKE_PHOTO吗[/quote] 哦,错了,没看到case TAKE_PHOTO里面的startActivityForResult(intent, CROP_PHOTO);
developerzjy 2016-10-18
  • 打赏
  • 举报
回复
引用 4 楼 tanxixiao8226 的回复:
[quote=引用 3 楼 u011182710 的回复:] startActivityForResult(intent, CROP_PHOTO); 有这句应该会回调到case CROP_PHOTO的内容啊 Log.i("test","CROP_PHOTO"); 这句log打出来了没
这句log没有打出来。 这就是我的疑问啊。 应该是能够回调的,可是这句log打不出来。[/quote] 在onActivityResult方法最开始把requestCode用log打出来,可以看出是否回调了onActivityResult,如果回调了再比较log打出来的值和CROP_PHOTO看看条件是否满足。 你这是全部代码?startActivityForResult(intent, TAKE_PHOTO);传的是TAKE_PHOTO,回调不是走case TAKE_PHOTO吗
qq840727854 2016-10-18
  • 打赏
  • 举报
回复
引用 11 楼 qq840727854 的回复:
[quote=引用 10 楼 tanxixiao8226 的回复:] [quote=引用 6 楼 Dovar_66 的回复:] 检查下权限,如果是6.0以上系统需要动态获取内存读写和相机权限
是5.1版本的 魅蓝note2 权限就是这些权限,有没有问题啊。

<uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
[/quote] 你还有没有 其他实体机 试试 如果没 你试试虚拟机可以不可以 可以的话 就确定 可能是魅族这边做了特殊处理 我这边 没有魅族 不好测试 ~~[/quote] 你可以 加下 我qq哦 详细聊
qq840727854 2016-10-18
  • 打赏
  • 举报
回复
引用 10 楼 tanxixiao8226 的回复:
[quote=引用 6 楼 Dovar_66 的回复:] 检查下权限,如果是6.0以上系统需要动态获取内存读写和相机权限
是5.1版本的 魅蓝note2 权限就是这些权限,有没有问题啊。

<uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
[/quote] 你还有没有 其他实体机 试试 如果没 你试试虚拟机可以不可以 可以的话 就确定 可能是魅族这边做了特殊处理 我这边 没有魅族 不好测试 ~~
Dovar_66 2016-10-18
  • 打赏
  • 举报
回复
检查下权限,如果是6.0以上系统需要动态获取内存读写和相机权限
qq840727854 2016-10-17
  • 打赏
  • 举报
回复
亲测 你的代码 是没有什么问题的 你是运行在什么手机上 什么版本 我试试看可以不
「已注销」 2016-10-17
  • 打赏
  • 举报
回复
引用 3 楼 u011182710 的回复:
startActivityForResult(intent, CROP_PHOTO); 有这句应该会回调到case CROP_PHOTO的内容啊 Log.i("test","CROP_PHOTO"); 这句log打出来了没
这句log没有打出来。 这就是我的疑问啊。 应该是能够回调的,可是这句log打不出来。
落雨尘封 2016-10-17
  • 打赏
  • 举报
回复
startActivityForResult(intent, CROP_PHOTO); 有这句应该会回调到case CROP_PHOTO的内容啊 Log.i("test","CROP_PHOTO"); 这句log打出来了没
tianfang 2016-10-17
  • 打赏
  • 举报
回复
发错地方了 发 移动开发-》 android 区
「已注销」 2016-10-17
  • 打赏
  • 举报
回复
为啥没人回应我

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧