Java 如何将图像路径作为参数传递给要从相机拍摄的图像

Java 如何将图像路径作为参数传递给要从相机拍摄的图像,java,android,image,file,camera,Java,Android,Image,File,Camera,我将图像作为此函数中的参数传递: twitt.ShareToWitter(字符串消息、铸造图像); (void chintan.khetiya.android.Twitter\u code.Twitt\u Sharing.ShareToWitter(字符串msg,文件图像\u url)) 现在在这里,我选择的图像从画廊,但现在我想采取的照片从凸轮和通过它。怎么做 以下是完整的代码: public class MainActivity extends Activity { // Replace

我将图像作为此函数中的参数传递:

twitt.ShareToWitter(字符串消息、铸造图像); (void chintan.khetiya.android.Twitter\u code.Twitt\u Sharing.ShareToWitter(字符串msg,文件图像\u url))

现在在这里,我选择的图像从画廊,但现在我想采取的照片从凸轮和通过它。怎么做

以下是完整的代码:

public class MainActivity extends Activity {

// Replace your KEY here and Run ,
public final String consumer_key = "trWwomp0b09ER2A8H1cQg";
public final String secret_key = "PAC3E3CtcPcTuPl9VpCuzY6eDD8hPZPwp6gRDCviLs";
File casted_image;

String string_img_url = null, string_msg = null;
Button btn, pick, cam;
EditText et;
ImageView iv;
private static int RESULT_LOAD_IMAGE = 1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try {
        setContentView(R.layout.main);

        iv = (ImageView) findViewById(R.id.imageView1);

        pick = (Button) findViewById(R.id.button1);
        pick.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent i = new Intent(
                        Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

                startActivityForResult(i, 1);
            }
        });

        cam = (Button) findViewById(R.id.button2);
        cam.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent takePicture = new Intent(
                        MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(takePicture, 0);
            }
        });

        btn = (Button) findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                onClickTwitt();
            }
        });
    } catch (Exception e) {
        // TODO: handle exception
        runOnUiThread(new Runnable() {
            public void run() {
                showToast("View problem");
            }
        });

    }
}

public void Call_My_Blog(View v) {
    Intent intent = new Intent(MainActivity.this, My_Blog.class);
    startActivity(intent);

}

// Here you can pass the string message & image path which you want to share
// in Twitter.
public void onClickTwitt() {
    if (isNetworkAvailable()) {
        Twitt_Sharing twitt = new Twitt_Sharing(MainActivity.this,
                consumer_key, secret_key);

        et = (EditText) findViewById(R.id.editText1);
        string_msg = et.getText().toString();

        twitt.shareToTwitter(string_msg, casted_image);

    } else {
        showToast("No Network Connection Available !!!");
    }
}

// when user will click on twitte then first that will check that is
// internet exist or not
public boolean isNetworkAvailable() {
    ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity == null) {
        return false;
    } else {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (int i = 0; i < info.length; i++) {
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
    }
    return false;
}

private void showToast(String msg) {
    Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();

}

protected void onActivityResult(int requestCode, int resultCode,
        Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

    switch (requestCode) {
    case 0:
        if (resultCode == RESULT_OK) {
            Uri selectedImage = imageReturnedIntent.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            // file path of captured image
            String filePath = cursor.getString(columnIndex);
            // file path of captured image
            casted_image = new File(filePath);

        }
        break;
    case 1:
        if (requestCode == 1 && resultCode == RESULT_OK
                && null != imageReturnedIntent) {
            Uri selectedImage = imageReturnedIntent.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            casted_image = new File(picturePath);
            cursor.close();
            iv.setImageURI(selectedImage);
            // String picturePath contains the path of selected Image
            break;
        }
    }
}
}
意图:

Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePicture, 0);
要获取该结果,请执行以下操作:

protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
   super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

   switch(requestCode) {
   case 0:
       if (requestCode == 0 && resultCode == RESULT_OK) {
        Bitmap photo = (Bitmap) data.getExtras().get("data");           
        // CALL THIS METHOD TO GET THE URI FROM THE BITMAP
        Uri tempUri = getImageUri(getApplicationContext(), photo);
        // CALL THIS METHOD TO GET THE ACTUAL PATH
        casted_image = new File(getRealPathFromURI(tempUri));
        System.out.println(tempUri);
    }  
   break;
   case 1:
       //handle gallery code here

        break;
  }
}

public Uri getImageUri(Context inContext, Bitmap inImage) {
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
    String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
    return Uri.parse(path);
}

public String getRealPathFromURI(Uri uriTemp) {
    Cursor cursor = getContentResolver().query(uriTemp, null, null, null, null); 
    cursor.moveToFirst(); 
    int mIndex = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
    return cursor.getString(mIndex); 
}
将其添加到manifest.xml中

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

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

要请求相机的特定文件位置,必须执行以下操作:

     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     cameraCaptureLocation = new File("... location goes here ...");
     intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraCaptureLocation));
     startActivityForResult(intent, REQUEST_CAMERA);

但是有一个问题,因为我在同一个地方使用cam和gallery,activityResult函数已经存在了。现在该怎么办


然后您必须使用
requestCode
来筛选活动结果的来源。您为
REQUEST\u CAMERA
传递了一个整数,为
REQUEST\u GALLERY

传递了另一个整数,但存在一个问题,因为我在同一位置同时使用cam和GALLERY,所以activityresult函数已经存在。现在要做什么。?为
案例0:
放置一个
try catch
,并将错误记录在日志cat上,并从
Uri selectedImage=imageReturnedIntent.getData()中记录
selectedImage
使用
Log.d(“我的日志”,“选择图像”)和catch块
Log.d(“我的日志”和“+ex)
Great。。。我已经回答你了,看看它是否有效。。如果是soHi,请接受它,您能回答吗?对不起,我没有处理linkedin授权,请尝试从
onClick()
调试您的代码,看看是否有错误,
null
从某个url返回
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     cameraCaptureLocation = new File("... location goes here ...");
     intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraCaptureLocation));
     startActivityForResult(intent, REQUEST_CAMERA);