本文介绍了相机部队三星Galaxy S3版本4.1.1关闭问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想捕捉图像并将其保存在图片浏览我的应用程序之一。我已经在所有的设备除了三星Galaxy S3的想法如何实现它,也工作正常。

我想要的东西:避免用力关闭问题即将在三星Galaxy S3和可能是我还没有测试过的所有其它设备

我做了什么:我也做了以下code来实现我的目标。

BuildInukshk_4活动:

 包com.inukshk.CreateInukshk;

进口的java.util.Calendar;

进口android.app.Activity;
进口android.app.AlertDialog;
进口android.content.ContentResolver;
进口android.content.ContentValues​​;
进口android.content.DialogInterface;
进口android.content.DialogInterface.OnDismissListener;
进口android.content.Intent;
进口android.database.Cursor;
进口android.graphics.Bitmap;
进口android.graphics.BitmapFactory;
进口android.net.Uri;
进口android.os.Bundle;
进口android.os.Environment;
进口android.os.StatFs;
进口android.provider.MediaStore;
进口android.util.Log;
进口android.view.ContextMenu;
进口android.view.ContextMenu.ContextMenuInfo;
进口android.view.MenuItem;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.Button;
进口android.widget.ImageView;
进口android.widget.TextView;
进口android.widget.Toast;

进口com.inukshk.R;
进口com.inukshk.constant.ImageCurve;

公共类BuildInukshk_4扩展活动实现OnClickListener,
        OnDismissListener {

    字符串变量=BuildInukshk_4;
    按钮btn_back,btn_upload_picture;
    TextView的txt_next;

    公共静态活动BuildInukshk_4Activity;

    //上传相机
    公共静态字符串媒体= NULL;
    公共静态字符串media_thumb = NULL;
    公共静态字符串MEDIA_TYPE = NULL;
    AlertDialog对话框;
    字符串_path,地方=;
    ImageView的ImageView的;
    布尔标志= TRUE;
    乌里uriVideo = NULL,mCapturedImageURI = NULL;
    私有静态最终诠释SELECT_PICTURE = 1;
    私人字符串selectedImagePath =;
    乌里selectedImageUri = NULL;
    私人字符串filemanagerstring;
    位图mBitmap;

    //从Transperant
    ContentResolver的crThumb;
    私有静态最终诠释CAMERA_PIC_REQUEST = 2500,VIDEO_REQUEST_ code = 3;
    最终静态INT REQUEST_VIDEO_CAPTURED = 2;
    BitmapFactory.Options选项;
    字符串文件名;
    长ID,imageid;
    光标光标,cursorimage,thumbCursor;

    私人字符串selectedthumbpath =;
    布尔完成= FALSE;
    // ADDED12324
    //私人字符串filemanagerstring;

    位图curThumb = NULL,curThumb1 = NULL;
    的String [] thumbColumns = {MediaStore.Video.Thumbnails.DATA,
            MediaStore.Video.Thumbnails.VIDEO_ID};

    的String [] mediaColumns = {MediaStore.Video.Media._ID,
            MediaStore.Video.Media.DATA};

    的String [] imageColumns = {MediaStore.Images.Media._ID,
            MediaStore.Images.Media.DATA};

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        // TODO自动生成方法存根
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.buildinukshk_4);

        BuildInukshk_4Activity =这一点;
        btn_back =(按钮)findViewById(R.id.btn_back);
        btn_back.setOnClickListener(本);

        btn_upload_picture =(按钮)findViewById(R.id.btn_upload_picture);
        btn_upload_picture.setOnClickListener(本);

        txt_next =(TextView中)findViewById(R.id.txt_next);
        txt_next.setOnClickListener(本);

        ImageView的=(ImageView的)findViewById(R.id.img_upload_pic);
    }

    @覆盖
    公共无效的onClick(视图v){
        // TODO自动生成方法存根

        如果(V == txt_next){
            如果(selectedImagePath.equals()){
                Toast.makeText(BuildInukshk_4.this,
                        请上传照片一,3).show();
            } 其他 {
                startActivity(新意图(BuildInukshk_4.this,
                        BuildInukshk_5.class));
            }

            // this.finish();
        }否则,如果(V == btn_back){
            // startActivity(新意图(BuildInukshk_4.this,
            // BuildInukshk_3.class));
            this.finish();
        }否则,如果(V == btn_upload_picture){
            registerForContextMenu(btn_upload_picture);
            openContextMenu(btn_upload_picture);
        }

    }

    @覆盖
    公共无效onCreateContextMenu(文本菜单菜单,视图V,
            ContextMenuInfo menuInfo){
        // TODO自动生成方法存根
        Log.i(TAG,内部onCreateContextMenu);
        super.onCreateContextMenu(菜单,V,menuInfo);

        如果(V == btn_upload_picture){
            menu.setHeaderTitle(上载媒体);
            menu.add(0,v.getId(),0,照片);
        }
    }

    @覆盖
    公共布尔onContextItemSelected(菜单项项){
        // TODO自动生成方法存根
        如果(item.getTitle()==照片){
            MEDIA_TYPE =形象;
            // media_thumb = NULL;
            / *
             *意向意图=新的意图(getApplicationContext()
             * Transperant.class); intent.putExtra(MEDIA_TYPE,介质类型);
             * startActivity(意向);
             * /

            ImageChooseOptionDialog();
            // ImageChooseOptionDialog();

        }
        返回super.onContextItemSelected(项目);
    }

    // Transperant类
    私人无效ImageChooseOptionDialog(){

        //结束= TRUE;

        Log.i(TAG,内部ImageChooseOptionDialog);
        对话框=新AlertDialog.Builder(BuildInukshk_4.this).create();
        dialog.setTitle(上传照片);
        dialog.setMessage(选择你的照片从这里开始。);
        dialog.setOnDismissListener(本);
        dialog.setButton(摄像机,新DialogInterface.OnClickListener(){
            公共无效的onClick(DialogInterface对话,诠释whichButton){
                // dialog.dismiss();
                Log.i(TAG,内部ImageChooseOptionDialog里面的摄像头);

                布尔ISSD present = android.os.Environment
                        .getExternalStorageState()。等于(
                                android.os.Environment.MEDIA_MOUNTED);
                mCapturedImageURI = NULL;
                如果(ISSD present){
                    //是SD卡是present
                    体statfs STAT =新体statfs(环境
                            。.getExternalStorageDirectory()getPath());
                    长方bytesAvailable =(长)stat.getBlockSize()
                            *(长)stat.getAvailableBlocks();
                    长megAvailable =方bytesAvailable /(1024 * 1024);
                    Log.e(,MB可用+ megAvailable);
                    如果(megAvailable→2){
                        日历CAL = Calendar.getInstance();
                        _path = cal.getTimeInMillis()+.JPG;

                        字符串文件名= _path;
                        //档案文件=新的文件(_path);
                        // mCapturedImageURI = Uri.fromFile(文件);
                        ContentValues​​值=新ContentValues​​();
                        values​​.put(MediaStore.Images.Media.TITLE,文件名);

                        mCapturedImageURI = getContentResolver()。插入(
                                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                                值);

                        Log.d(TAG,-----路径-----+ _path);

                        意向意图=新的意图(
                                android.provider.MediaStore.ACTION_IM​​AGE_CAPTURE);

                        intent.putExtra(MediaStore.EXTRA_OUTPUT,
                                mCapturedImageURI);

                        Log.d(TAG,----- mCapturedImageURI ****** -----
                                + mCapturedImageURI);
                        startActivityForResult(意向,1212);

                        标志= FALSE;
                    } 其他 {

                        Toast.makeText(BuildInukshk_4.this,
                                无内存可用,2).show();
                        标志=真正的;
                    }
                } 其他 {
                    // 抱歉
                    //体statfs STAT =新体statfs(Environment.getDataDirectory()
                    // .getPath());
                    //长方bytesAvailable =(长)stat.getBlockSize()
                    // *(长)stat.getAvailableBlocks();
                    //长megAvailable =方bytesAvailable /(1024 * 1024);
                    // Log.e(,内部MB:+ megAvailable);
                    //如果(megAvailable→2){
                    // startActivityForResult(新意图(Transperant.this,
                    // VideoRecorder.class),REQUEST_VIDEO_CAPTURED);
                    //
                    //标志= FALSE;
                    // } 其他 {
                    Toast.makeText(BuildInukshk_4.this,无内存可用,
                            2).show();
                    标志=真正的;
                    //}
                    // Toast.makeText(Transperant.this,没有外部存储,
                    // 2)
                    // 。显示();
                }

            }
        });
        dialog.setButton2(画廊,新DialogInterface.OnClickListener(){
            公共无效的onClick(DialogInterface对话,诠释whichButton){
                Log.i(TAG,内部GALLARY);
                Log.i(TAG,内部ImageChooseOptionDialog里面的摄像头);
                // dialog.dismiss();
                意向意图=新的意图();
                intent.setType(图像/ *);
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(
                        Intent.createChooser(意向,选择图片),
                        SELECT_PICTURE);
                标志= FALSE;

            }
        });

        dialog.show();

    }

    @覆盖
    公共无效onDismiss(DialogInterface对话){
        // TODO自动生成方法存根

    }

    公共字符串getPath(URI URI){
        的String []投影= {MediaStore.Images.Media.DATA};
        光标光标= managedQuery(URI,投影,NULL,NULL,NULL);
        如果(光标!= NULL){
            //这里你会得到一个空指针光标是否NULL
            //这个可以,如果您使用OI文件管理器采摘媒体
            INT与Column_Index =光标
                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToFirst();
            返回cursor.getString(Column_Index中);
        } 其他
            返回null;
    }

    公共无效onActivityResult(INT申请code,INT结果code,
            最终意图数据){

        crThumb = getContentResolver();
        选项​​=新BitmapFactory.Options();
        options.inSampleSize = 1;
        Log.i(TAG,内部onActivityResult);

        如果(要求code == SELECT_PICTURE){
            如果(结果code == RESULT_OK){
                Log.i(TAG,SELECT_PICTURE);
                selectedImageUri = data.getData();
                // filemanagerstring = selectedImageUri.getPath();
                selectedImagePath = getPath(selectedImageUri);
                如果(selectedImagePath!= NULL){
                    BuildInukshk_4.media = selectedImagePath;
                    Log.e(映像路径,selectedImagePath);

                    mBitmap = BitmapFactory.de codeFILE(媒体);
                    如果(mBitmap!= NULL){
                        Log.i(TAG,内部设置图像);
                        imageView.setImageBitmap(mBitmap);
                    }
                    // selectedthumbpath = NULL;
                    // Testimage();

                    // // curThumb1 = MediaStore.Images.Thumbnails.getThumbnail(
                    // // crThumb,imageid,
                    // // MediaStore.Video.Thumbnails.MICRO_KIND,期权);
                    //
                    //光标thumbCursorimage = managedQuery(
                    // MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                    // imageColumns,MediaStore.Images.Thumbnails.IMAGE_ID
                    // +=+ imageid,NULL,NULL);
                    //
                    // Log.e(Transarerant
                    //---里面做测试图像cusor 2日 -
                    // + thumbCursorimage.getCount());
                    //如果(thumbCursorimage.moveToFirst()){
                    // selectedthumbpath = thumbCursorimage
                    // .getString(thumbCursorimage
                    // .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
                    // // selectedthumbpath =新
                    // Log.e(PathofThumb,selectedthumbpath);
                    // BuildInukshk_4.media_thumb = selectedthumbpath;
                    //}

                }
            }

        }否则,如果(要求code == VIDEO_REQUEST_ code){
        }

        否则,如果(要求code == REQUEST_VIDEO_CAPTURED){
        }

        否则,如果(要求code == 1212){

            如果(结果code == RESULT_OK){
                Log.i(TAG,内部。如果在摄像机条件);
                Log.i(TAG,mCptureURI:+ mCapturedImageURI);

                的String []投影= {MediaStore.Images.Media.DATA};
                光标光标= managedQuery(mCapturedImageURI,投影,
                        NULL,NULL,NULL);
                INT column_index_data =光标
                        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToFirst();
                selectedImagePath = cursor.getString(column_index_data);
                Log.e(映像路径,selectedImagePath);

                BuildInukshk_4.media = selectedImagePath;

                mBitmap = BitmapFactory.de codeFILE(媒体);
                如果(mBitmap!= NULL){
                    Log.i(TAG,内部设置图像);
                    // mBitmap = ImageCurve.GetCurveImage(mBitmap);
                    imageView.setImageBitmap(mBitmap);
                }

                // selectedthumbpath = NULL;
                // Testimage();

                // curThumb1 =
                // MediaStore.Images.Thumbnails.getThumbnail(crThumb,
                // imageid,MediaStore.Video.Thumbnails.MICRO_KIND,
                //选件);
                //
                //光标thumbCursorimage = managedQuery(
                // MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                // imageColumns,MediaStore.Images.Thumbnails.IMAGE_ID
                // +=+ imageid,NULL,NULL);
                //
                // Log.e(Transarerant
                //---里面做测试图像cusor 2日 -
                // + thumbCursorimage.getCount());
                //如果(thumbCursorimage.moveToFirst()){
                // selectedthumbpath = thumbCursorimage
                // .getString(thumbCursorimage
                // .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
                // // selectedthumbpath =新
                // Log.e(PathofThumb,selectedthumbpath);
                // BuildInukshk_4.media_thumb = selectedthumbpath;
            }

        }
    }
}
 

另外这里是我的清单文件,如果我在这里做我的错误:

 <舱单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    包=com.inukshk
    安卓版code =1
    机器人:VERSIONNAME =1.0>

    <用途-SDK
        安卓的minSdkVersion =8
        机器人:targetSdkVersion =15/>

    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_FINE_LOCATION/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_COARSE_LOCATION/>
    <使用-权限的Andr​​oid:名称=android.permission.INTERNET对/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_NETWORK_STATE/>
    <使用-权限的Andr​​oid:名称=android.permission.WRITE_EXTERNAL_STORAG​​E/>

    <! - 相机 - >
    <使用-权限的Andr​​oid:名称=android.permission.CAMERA/>
    <使用特征的android:NAME =android.hardware.camera.autofocus/>
    <使用-权限的Andr​​oid:名称=android.permission.VIBRATE/>
    <使用-权限的Andr​​oid:名称=android.permission.FLASHLIGHT/>

    <! - 不要求拍照,因为这需要一个后置摄像头。这使得它的工作的的Nexus 7  - >
    <用途特征
        机器人:名称=android.hardware.camera
        机器人:要求=FALSE/>
    <用途特征
        机器人:名称=android.hardware.camera.front
        机器人:要求=FALSE/>
    <用途特征
        机器人:名称=android.hardware.camera.autofocus
        机器人:要求=FALSE/>
    <用途特征
        机器人:名称=android.hardware.camera.flash
        机器人:要求=FALSE/>
    <使用特征的android:NAME =android.hardware.screen.landscape/>
    <用途特征
        机器人:名称=android.hardware.wifi
        机器人:要求=FALSE/>
    <用途特征
        机器人:名称=android.hardware.touchscreen
        机器人:要求=FALSE/>
    <使用特征的android:NAME =android.hardware.camera/>

    <应用
        机器人:图标=@可绘制/ app_icon_final
        机器人:标签=@字符串/ APP_NAME
        机器人:主题=@安卓风格/ Theme.NoTitleBar>
        <使用库机器人:名称=com.google.android.maps/>

        <活动
            机器人:名称=闪屏
            机器人:标签=@字符串/ title_activity_main
            机器人:screenOrientation =sensorPortait>
            <意向滤光器>
                <作用机器人:名称=android.intent.action.MAIN/>

                <类机器人:名称=android.intent.category.LAUNCHER/>
            &所述; /意图滤光器>
        < /活性GT;
        <活动
            机器人:名称=。MainActivity
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:名称=。login.LoginActivity
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =stateHidden/>
        <活动
            机器人:名称=。WhereAmI.WhereAmI
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:WhosNearMe.WhosNearMeNAME =
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:名称=。WhatsNearMe.WhatsNearMe
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:名称=。CreateInukshk.CreateInukshk
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =adjustPan/>
        <活动
            机器人:CreateInukshk.BuildInukshk_1NAME =
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =adjustPan/>
        <活动
            机器人:CreateInukshk.BuildInukshk_2NAME =
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =adjustPan/>
        <活动
            机器人:CreateInukshk.BuildInukshk_3NAME =
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =adjustPan/>
        <活动
            机器人:CreateInukshk.BuildInukshk_4NAME =
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =adjustPan/>
        <活动
            机器人:CreateInukshk.BuildInukshk_5NAME =
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =adjustPan/>
        <活动
            机器人:名称=。tTab.TabSample
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =adjustPan/>
        <活动
            机器人:名称=。register.RegisterActivity
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =adjustPan/>
        <活动
            机器人:名称=。Transperant
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:HomeActivityNAME =
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:AfterSplashNAME =
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:名称=。login.ForgotPasswordActivity
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:settings.MyProfileNAME =
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =adjustPan/>
        <活动
            机器人:settings.MyInterestsNAME =
            机器人:screenOrientation =sensorPortait
            机器人:windowSoftInputMode =adjustPan/>
        <活动
            机器人:settings.InukshkSettingsNAME =
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:settings.MyPictureNAME =
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:settings.MyInukshksNAME =
            机器人:screenOrientation =sensorPortait/>
        <活动
            机器人:settings.ChangePasswordNAME =
            机器人:screenOrientation =sensorPortait/>
    < /用途>

< /舱单>
 

我已经寻找这个问题的多那么链接,但没有完全得到任何解决方案,为我工作。请帮我走出了这一点。

我想记在这里,我没有一个真正的设备测试这个问题。
但我的客户有这个问题真正的设备上。我做了一个仿真器是一样的S3,其工作与每一个场景没有后顾之忧。照片我不知道这是为什么只有真正的设备上发生的事情。

在此先感谢

解决方案

我花了很多时间为这一个问题,得到了code工作在大部分的设备与修改code,如下:

中的任何一个具有未来同样的问题,可以试试下面的code。

同时呼吁意图图像捕捉:

 字符串storageState = Environment.getExternalStorageState();

                    如果(storageState.equals(Environment.MEDIA_MOUNTED)){
                        意向意图=新的意图(
                                MediaStore.ACTION_IM​​AGE_CAPTURE);

                        字符串文件名= System.currentTimeMillis的()+.JPG;
                        ContentValues​​值=新ContentValues​​();
                        values​​.put(MediaStore.Images.Media.TITLE,文件名);
                        mImageCaptureUri = getContentResolver()。插入(
                                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                                值);

                        intent.putExtra(
                                android.provider.MediaStore.EXTRA_OUTPUT,
                                mImageCaptureUri);


                        尝试 {

                            startActivityForResult(意向,PICK_FROM_CAMERA);
                        }赶上(ActivityNotFoundException E){
                            e.printStackTrace();
                        }
                    } 其他 {
                        新AlertDialog.Builder(BuildInukshk_4_Camera.this)
                                .setMessage(
                                        外部的StoreAge(SD卡)需要\ñ\ n目前的状态。
                                                + storageState)
                                .setCancelable(真).create()显示()。
                    }

                }其他{//挑选文件
                    意向意图=新的意图();

                    intent.setType(图像/ *);
                    intent.setAction(Intent.ACTION_GET_CONTENT);

                    startActivityForResult(Intent.createChooser(意向,
                            完整的行动使用),PICK_FROM_FILE);
                }
 

在OnActivityResult方法:

 案例PICK_FROM_CAMERA:
                Log.i(TAG,内部PICK_FROM_CAMERA);

                //最后code,如下
                尝试 {
                    Log.i(里三星手机,TAG,);
                    的String []投影= {
                            MediaStore.Images.Thumbnails._ID,//我们想要的列
                            MediaStore.Images.Thumbnails.IMAGE_ID,
                            MediaStore.Images.Thumbnails.KIND,
                            MediaStore.Images.Thumbnails.DATA};
                    串选择= MediaStore.Images.Thumbnails.KIND +=+ //选择
                                                                                    // 只要
                                                                                    // mini的
                            MediaStore.Images.Thumbnails.MINI_KIND;

                    字符串排序= MediaStore.Images.Thumbnails._ID +DESC;

                    //目前,这是一个黑客位,因为我全退
                    //图像,只是把最新的一个。有一种更好的方法
                    // 至
                    我觉得有一个WHERE子句,即//缩小下来
                    // 目前
                    //选择变量
                    光标myCursor = this.managedQuery(
                            MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                            投影,选择,空,排序);

                    长imageId =0升;
                    长thumbnailImageId =0升;
                    字符串thumbnailPath =;

                    尝试 {
                        myCursor.moveToFirst();
                        imageId = myCursor
                                .getLong(myCursor
                                        .getColumnIndexOrThrow(MediaStore.Images.Thumbnails.IMAGE_ID));
                        thumbnailImageId = myCursor
                                .getLong(myCursor
                                        .getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID));
                        thumbnailPath = myCursor
                                .getString(myCursor
                                        .getColumnIndexOrThrow(MediaStore.Images.Thumbnails.DATA));
                    } 最后 {
                        // myCursor.close();
                    }

                    //创建新的光标,以获得较大的图像文件路径

                    的String [] largeFileProjection = {
                            MediaStore.Images.ImageColumns._ID,
                            MediaStore.Images.ImageColumns.DATA};

                    字符串largeFileSort = MediaStore.Images.ImageColumns._ID
                            +DESC;
                    myCursor = this.managedQuery(
                            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            largeFileProjection,NULL,NULL,largeFileSort);
                    字符串largeImagePath =;

                    尝试 {
                        myCursor.moveToFirst();

                        //这实际上给哟uthe文件路径的位置
                        // 图像。
                        largeImagePath = myCursor
                                .getString(myCursor
                                        .getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DATA));
                        mImageCaptureUri_samsung = Uri.fromFile(新文件(
                                largeImagePath));
                        mImageCaptureUri = NULL;
                    } 最后 {
                        // myCursor.close();
                    }

                    //这是两个URI的你会感兴趣。他们给
                    //你
                    //处理实际图像
                    乌里uriLargeImage = Uri.withAppendedPath(
                            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            将String.valueOf(imageId));
                    乌里uriThumbnailImage = Uri.withAppendedPath(
                            MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                            将String.valueOf(thumbnailImageId));

                    //我已经离开了剩下的code,因为我要做的就是分配
                    // URI的
                    //我自己的对象反正...
                }赶上(例外五){
                    mImageCaptureUri_samsung = NULL;
                    Log.i(TAG,
                            内抓三星手机异常+ e.toString());

                }

                尝试 {
                    Log.i(TAG,
                            URI三星:+ mImageCaptureUri_samsung.getPath());

                }赶上(例外五){
                    Log.i(TAG,Excfeption里面的三星URI:+ e.toString());
                }

                尝试 {

                    Log.i(TAG,URI正常:+ mImageCaptureUri.getPath());
                }赶上(例外五){
                    Log.i(TAG,Excfeption内的正常URI:+ e.toString());
                }



                打破;
 

运行低于code,你会得到后两个URI mImageCaptureUri_samsung mImageCaptureUri

您将得到mImageCaptureUri作为你的路径,如果你正在运行的应用程序使用简单的设备,你会得到在mImageCaptureUri_samsung您Cpatured图片的路径,如果你有设备,如三星Galaxy S3运行。

此外,您都可以与你的code继续。它的作品对我来说非常细跟我的所有测试中的设备。

此外,如果有人有问题,上面code比他们可以参考下面伟大的链接<一个href="http://kevinpotgieter.word$p$pss.com/2011/03/30/null-intent-passed-back-on-samsung-galaxy-tab/"相对=nofollow>的三星Galaxy S3 解决方案

希望这将有助于。

I want to capture image and save it in Image view in one of My Application. I already have an idea how to implement it and also Works fine in all device Except Samsung Galaxy S3.

What I Want: Avoid the Force Closing Issue Coming in Samsung Galaxy S3 and probably for all other Device which i have not yet tested.

What I have Done: I have Done the Below Code to achieve my goal.

BuildInukshk_4 Activity :

package com.inukshk.CreateInukshk;

import java.util.Calendar;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.provider.MediaStore;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.inukshk.R;
import com.inukshk.constant.ImageCurve;

public class BuildInukshk_4 extends Activity implements OnClickListener,
        OnDismissListener {

    String TAG = "BuildInukshk_4";
    Button btn_back, btn_upload_picture;
    TextView txt_next;

    public static Activity BuildInukshk_4Activity;

    // Upload Camera
    public static String media = null;
    public static String media_thumb = null;
    public static String media_type = null;
    AlertDialog dialog;
    String _path, Place = "";
    ImageView imageView;
    boolean flag = true;
    Uri uriVideo = null, mCapturedImageURI = null;
    private static final int SELECT_PICTURE = 1;
    private String selectedImagePath = "";
    Uri selectedImageUri = null;
    private String filemanagerstring;
    Bitmap mBitmap;

    // From Transperant
    ContentResolver crThumb;
    private static final int CAMERA_PIC_REQUEST = 2500, VIDEO_REQUEST_CODE = 3;
    final static int REQUEST_VIDEO_CAPTURED = 2;
    BitmapFactory.Options options;
    String fileName;
    long id, imageid;
    Cursor cursor, cursorimage, thumbCursor;

    private String selectedthumbpath = "";
    boolean finish = false;
    // ADDED12324
    // private String filemanagerstring;

    Bitmap curThumb = null, curThumb1 = null;
    String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA,
            MediaStore.Video.Thumbnails.VIDEO_ID };

    String[] mediaColumns = { MediaStore.Video.Media._ID,
            MediaStore.Video.Media.DATA };

    String[] imageColumns = { MediaStore.Images.Media._ID,
            MediaStore.Images.Media.DATA };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.buildinukshk_4);

        BuildInukshk_4Activity = this;
        btn_back = (Button) findViewById(R.id.btn_back);
        btn_back.setOnClickListener(this);

        btn_upload_picture = (Button) findViewById(R.id.btn_upload_picture);
        btn_upload_picture.setOnClickListener(this);

        txt_next = (TextView) findViewById(R.id.txt_next);
        txt_next.setOnClickListener(this);

        imageView = (ImageView) findViewById(R.id.img_upload_pic);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        if (v == txt_next) {
            if (selectedImagePath.equals("")) {
                Toast.makeText(BuildInukshk_4.this,
                        "Please Upload Picture First", 3).show();
            } else {
                startActivity(new Intent(BuildInukshk_4.this,
                        BuildInukshk_5.class));
            }

            // this.finish();
        } else if (v == btn_back) {
            // startActivity(new Intent(BuildInukshk_4.this,
            // BuildInukshk_3.class));
            this.finish();
        } else if (v == btn_upload_picture) {
            registerForContextMenu(btn_upload_picture);
            openContextMenu(btn_upload_picture);
        }

    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        // TODO Auto-generated method stub
        Log.i(TAG, "Inside onCreateContextMenu");
        super.onCreateContextMenu(menu, v, menuInfo);

        if (v == btn_upload_picture) {
            menu.setHeaderTitle("Upload Media");
            menu.add(0, v.getId(), 0, "Photo");
        }
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        if (item.getTitle() == "Photo") {
            media_type = "image";
            // media_thumb = null;
            /*
             * Intent intent = new Intent(getApplicationContext(),
             * Transperant.class); intent.putExtra("MEDIA_TYPE", media_type);
             * startActivity(intent);
             */

            ImageChooseOptionDialog();
            // ImageChooseOptionDialog();

        }
        return super.onContextItemSelected(item);
    }

    // Transperant Class
    private void ImageChooseOptionDialog() {

        // finish = true;

        Log.i(TAG, "Inside ImageChooseOptionDialog");
        dialog = new AlertDialog.Builder(BuildInukshk_4.this).create();
        dialog.setTitle("Upload Photo");
        dialog.setMessage("Choose your Photo From here.");
        dialog.setOnDismissListener(this);
        dialog.setButton("Camera", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                // dialog.dismiss();
                Log.i(TAG, "Inside ImageChooseOptionDialog inside camera");

                Boolean isSDPresent = android.os.Environment
                        .getExternalStorageState().equals(
                                android.os.Environment.MEDIA_MOUNTED);
                mCapturedImageURI = null;
                if (isSDPresent) {
                    // yes SD-card is present
                    StatFs stat = new StatFs(Environment
                            .getExternalStorageDirectory().getPath());
                    long bytesAvailable = (long) stat.getBlockSize()
                            * (long) stat.getAvailableBlocks();
                    long megAvailable = bytesAvailable / (1024 * 1024);
                    Log.e("", "Available MB : " + megAvailable);
                    if (megAvailable > 2) {
                        Calendar cal = Calendar.getInstance();
                        _path = cal.getTimeInMillis() + ".jpg";

                        String fileName = _path;
                        // File file = new File(_path);
                        // mCapturedImageURI = Uri.fromFile(file);
                        ContentValues values = new ContentValues();
                        values.put(MediaStore.Images.Media.TITLE, fileName);

                        mCapturedImageURI = getContentResolver().insert(
                                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                                values);

                        Log.d(TAG, "----- path ----- " + _path);

                        Intent intent = new Intent(
                                android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

                        intent.putExtra(MediaStore.EXTRA_OUTPUT,
                                mCapturedImageURI);

                        Log.d(TAG, "----- mCapturedImageURI ******----- "
                                + mCapturedImageURI);
                        startActivityForResult(intent, 1212);

                        flag = false;
                    } else {

                        Toast.makeText(BuildInukshk_4.this,
                                "No Memory Available", 2).show();
                        flag = true;
                    }
                } else {
                    // Sorry
                    // StatFs stat = new StatFs(Environment.getDataDirectory()
                    // .getPath());
                    // long bytesAvailable = (long) stat.getBlockSize()
                    // * (long) stat.getAvailableBlocks();
                    // long megAvailable = bytesAvailable / (1024 * 1024);
                    // Log.e("", "Internal MB : " + megAvailable);
                    // if (megAvailable > 2) {
                    // startActivityForResult(new Intent(Transperant.this,
                    // VideoRecorder.class), REQUEST_VIDEO_CAPTURED);
                    //
                    // flag = false;
                    // } else {
                    Toast.makeText(BuildInukshk_4.this, "No Memory Available",
                            2).show();
                    flag = true;
                    // }
                    // Toast.makeText(Transperant.this, "No External Storage",
                    // 2)
                    // .show();
                }

            }
        });
        dialog.setButton2("Gallery", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                Log.i(TAG, "Inside Gallary");
                Log.i(TAG, "Inside ImageChooseOptionDialog inside camera");
                // dialog.dismiss();
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(
                        Intent.createChooser(intent, "Select Picture"),
                        SELECT_PICTURE);
                flag = false;

            }
        });

        dialog.show();

    }

    @Override
    public void onDismiss(DialogInterface dialog) {
        // TODO Auto-generated method stub

    }

    public String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        if (cursor != null) {
            // HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
            // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
            int column_index = cursor
                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        } else
            return null;
    }

    public void onActivityResult(int requestCode, int resultCode,
            final Intent data) {

        crThumb = getContentResolver();
        options = new BitmapFactory.Options();
        options.inSampleSize = 1;
        Log.i(TAG, "Inside onActivityResult");

        if (requestCode == SELECT_PICTURE) {
            if (resultCode == RESULT_OK) {
                Log.i(TAG, "SELECT_PICTURE");
                selectedImageUri = data.getData();
                // filemanagerstring = selectedImageUri.getPath();
                selectedImagePath = getPath(selectedImageUri);
                if (selectedImagePath != null) {
                    BuildInukshk_4.media = selectedImagePath;
                    Log.e("Image path", selectedImagePath);

                    mBitmap = BitmapFactory.decodeFile(media);
                    if (mBitmap != null) {
                        Log.i(TAG, "Inside Set Image");
                        imageView.setImageBitmap(mBitmap);
                    }
                    // selectedthumbpath = null;
                    // Testimage();

                    // // curThumb1 = MediaStore.Images.Thumbnails.getThumbnail(
                    // // crThumb, imageid,
                    // // MediaStore.Video.Thumbnails.MICRO_KIND, options);
                    //
                    // Cursor thumbCursorimage = managedQuery(
                    // MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                    // imageColumns, MediaStore.Images.Thumbnails.IMAGE_ID
                    // + "=" + imageid, null, null);
                    //
                    // Log.e("Transarerant",
                    // "--- inside do TEst Image cusor 2nd -- "
                    // + thumbCursorimage.getCount());
                    // if (thumbCursorimage.moveToFirst()) {
                    // selectedthumbpath = thumbCursorimage
                    // .getString(thumbCursorimage
                    // .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
                    // // selectedthumbpath = new
                    // Log.e("PathofThumb", selectedthumbpath);
                    // BuildInukshk_4.media_thumb = selectedthumbpath;
                    // }

                }
            }

        } else if (requestCode == VIDEO_REQUEST_CODE) {
        }

        else if (requestCode == REQUEST_VIDEO_CAPTURED) {
        }

        else if (requestCode == 1212) {

            if (resultCode == RESULT_OK) {
                Log.i(TAG, "Inside IF CONDITIONS in Camera");
                Log.i(TAG, "mCptureURI :" + mCapturedImageURI);

                String[] projection = { MediaStore.Images.Media.DATA };
                Cursor cursor = managedQuery(mCapturedImageURI, projection,
                        null, null, null);
                int column_index_data = cursor
                        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToFirst();
                selectedImagePath = cursor.getString(column_index_data);
                Log.e("Image path", selectedImagePath);

                BuildInukshk_4.media = selectedImagePath;

                mBitmap = BitmapFactory.decodeFile(media);
                if (mBitmap != null) {
                    Log.i(TAG, "Inside Set Image");
                    // mBitmap = ImageCurve.GetCurveImage(mBitmap);
                    imageView.setImageBitmap(mBitmap);
                }

                // selectedthumbpath = null;
                // Testimage();

                // curThumb1 =
                // MediaStore.Images.Thumbnails.getThumbnail(crThumb,
                // imageid, MediaStore.Video.Thumbnails.MICRO_KIND,
                // options);
                //
                // Cursor thumbCursorimage = managedQuery(
                // MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                // imageColumns, MediaStore.Images.Thumbnails.IMAGE_ID
                // + "=" + imageid, null, null);
                //
                // Log.e("Transarerant",
                // "--- inside do TEst Image cusor 2nd -- "
                // + thumbCursorimage.getCount());
                // if (thumbCursorimage.moveToFirst()) {
                // selectedthumbpath = thumbCursorimage
                // .getString(thumbCursorimage
                // .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
                // // selectedthumbpath = new
                // Log.e("PathofThumb", selectedthumbpath);
                // BuildInukshk_4.media_thumb = selectedthumbpath;
            }

        }
    }
}

Also Here is my Manifest file if i have done my mistake here:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.inukshk"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- FOR Camera -->
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />

    <!-- Don't require camera, as this requires a rear camera. This allows it to work on the Nexus 7 -->
    <uses-feature
        android:name="android.hardware.camera"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.front"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.autofocus"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.flash"
        android:required="false" />
    <uses-feature android:name="android.hardware.screen.landscape" />
    <uses-feature
        android:name="android.hardware.wifi"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />
    <uses-feature android:name="android.hardware.camera" />

    <application
        android:icon="@drawable/app_icon_final"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar" >
        <uses-library android:name="com.google.android.maps" />

        <activity
            android:name=".SplashScreen"
            android:label="@string/title_activity_main"
            android:screenOrientation="sensorPortait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".login.LoginActivity"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="stateHidden" />
        <activity
            android:name=".WhereAmI.WhereAmI"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".WhosNearMe.WhosNearMe"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".WhatsNearMe.WhatsNearMe"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".CreateInukshk.CreateInukshk"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".CreateInukshk.BuildInukshk_1"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".CreateInukshk.BuildInukshk_2"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".CreateInukshk.BuildInukshk_3"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".CreateInukshk.BuildInukshk_4"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".CreateInukshk.BuildInukshk_5"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".tTab.TabSample"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".register.RegisterActivity"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".Transperant"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".HomeActivity"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".AfterSplash"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".login.ForgotPasswordActivity"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".settings.MyProfile"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".settings.MyInterests"
            android:screenOrientation="sensorPortait"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".settings.InukshkSettings"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".settings.MyPicture"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".settings.MyInukshks"
            android:screenOrientation="sensorPortait" />
        <activity
            android:name=".settings.ChangePassword"
            android:screenOrientation="sensorPortait" />
    </application>

</manifest>

I have searched for this issue in Many SO link but do not quite get any solution worked for me. Please Help me to get out of this.

I would like to make a note here that I do not have a real device for testing this issue.
But my client has this issue on a real device. I have made an emulator which is the same as S3 and its working with no worries in every scenarios.
I do not know why this is happening only on the real device.

Thanks in Advance

解决方案

I have Spent many Hours for this Single Issue and Got the Code Working in Most of the Devices With Modifying the Code as Below :

Any one having the Same issue in future can try out the Below Code.

While Calling intent for Image Capture :

String storageState = Environment.getExternalStorageState();

                    if (storageState.equals(Environment.MEDIA_MOUNTED)) {
                        Intent intent = new Intent(
                                MediaStore.ACTION_IMAGE_CAPTURE);

                        String filename = System.currentTimeMillis() + ".jpg";
                        ContentValues values = new ContentValues();
                        values.put(MediaStore.Images.Media.TITLE, filename);
                        mImageCaptureUri = getContentResolver().insert(
                                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                                values);

                        intent.putExtra(
                                android.provider.MediaStore.EXTRA_OUTPUT,
                                mImageCaptureUri);


                        try {

                            startActivityForResult(intent, PICK_FROM_CAMERA);
                        } catch (ActivityNotFoundException e) {
                            e.printStackTrace();
                        }
                    } else {
                        new AlertDialog.Builder(BuildInukshk_4_Camera.this)
                                .setMessage(
                                        "External Storeage (SD Card) is required.\n\nCurrent state: "
                                                + storageState)
                                .setCancelable(true).create().show();
                    }

                } else { // pick from file
                    Intent intent = new Intent();

                    intent.setType("image/*");
                    intent.setAction(Intent.ACTION_GET_CONTENT);

                    startActivityForResult(Intent.createChooser(intent,
                            "Complete action using"), PICK_FROM_FILE);
                }

Inside OnActivityResult Method :

case PICK_FROM_CAMERA:
                Log.i("TAG", "Inside PICK_FROM_CAMERA");

                // Final Code As Below
                try {
                    Log.i("TAG", "inside Samsung Phones");
                    String[] projection = {
                            MediaStore.Images.Thumbnails._ID, // The columns we want
                            MediaStore.Images.Thumbnails.IMAGE_ID,
                            MediaStore.Images.Thumbnails.KIND,
                            MediaStore.Images.Thumbnails.DATA };
                    String selection = MediaStore.Images.Thumbnails.KIND + "=" + // Select
                                                                                    // only
                                                                                    // mini's
                            MediaStore.Images.Thumbnails.MINI_KIND;

                    String sort = MediaStore.Images.Thumbnails._ID + " DESC";

                    // At the moment, this is a bit of a hack, as I'm returning ALL
                    // images, and just taking the latest one. There is a better way
                    // to
                    // narrow this down I think with a WHERE clause which is
                    // currently
                    // the selection variable
                    Cursor myCursor = this.managedQuery(
                            MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                            projection, selection, null, sort);

                    long imageId = 0l;
                    long thumbnailImageId = 0l;
                    String thumbnailPath = "";

                    try {
                        myCursor.moveToFirst();
                        imageId = myCursor
                                .getLong(myCursor
                                        .getColumnIndexOrThrow(MediaStore.Images.Thumbnails.IMAGE_ID));
                        thumbnailImageId = myCursor
                                .getLong(myCursor
                                        .getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID));
                        thumbnailPath = myCursor
                                .getString(myCursor
                                        .getColumnIndexOrThrow(MediaStore.Images.Thumbnails.DATA));
                    } finally {
                        // myCursor.close();
                    }

                    // Create new Cursor to obtain the file Path for the large image

                    String[] largeFileProjection = {
                            MediaStore.Images.ImageColumns._ID,
                            MediaStore.Images.ImageColumns.DATA };

                    String largeFileSort = MediaStore.Images.ImageColumns._ID
                            + " DESC";
                    myCursor = this.managedQuery(
                            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            largeFileProjection, null, null, largeFileSort);
                    String largeImagePath = "";

                    try {
                        myCursor.moveToFirst();

                        // This will actually give yo uthe file path location of the
                        // image.
                        largeImagePath = myCursor
                                .getString(myCursor
                                        .getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DATA));
                        mImageCaptureUri_samsung = Uri.fromFile(new File(
                                largeImagePath));
                        mImageCaptureUri = null;
                    } finally {
                        // myCursor.close();
                    }

                    // These are the two URI's you'll be interested in. They give
                    // you a
                    // handle to the actual images
                    Uri uriLargeImage = Uri.withAppendedPath(
                            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            String.valueOf(imageId));
                    Uri uriThumbnailImage = Uri.withAppendedPath(
                            MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                            String.valueOf(thumbnailImageId));

                    // I've left out the remaining code, as all I do is assign the
                    // URI's
                    // to my own objects anyways...
                } catch (Exception e) {
                    mImageCaptureUri_samsung = null;
                    Log.i("TAG",
                            "inside catch Samsung Phones exception " + e.toString());

                }

                try {
                    Log.i("TAG",
                            "URI Samsung:" + mImageCaptureUri_samsung.getPath());

                } catch (Exception e) {
                    Log.i("TAG", "Excfeption inside Samsung URI :" + e.toString());
                }

                try {

                    Log.i("TAG", "URI Normal:" + mImageCaptureUri.getPath());
                } catch (Exception e) {
                    Log.i("TAG", "Excfeption inside Normal URI :" + e.toString());
                }



                break;

After Running Below Code you Will get Two URIs mImageCaptureUri_samsung and mImageCaptureUri

you will get the mImageCaptureUri as your Path if you are running the App with Simple Devices and you will get your Cpatured Image path in mImageCaptureUri_samsung if you are running with Devices Like Samsung Galaxy S3.

Further you all can go ahead with your Code. it Works For me Very Fine With all the Devices i have tested on.

Also if Someone is having Problem with Above Code than they can reference the Below Great Link Solution of Samsung Galaxy S3

Hope it will Help.

这篇关于相机部队三星Galaxy S3版本4.1.1关闭问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-19 00:18