0

スイッチを使用して、button2 が選択されたときにアプリケーションでユーザーが SD カードから画像を選択できるようにしました。

OnActivityResult で画像 uri を取得します。この URI ファイルパスを取得し、Action_send 関数を使用して同じアクティビティ内のボタン 1 で使用します。

public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()){
            case R.id.button1:



                Intent i = new Intent(Intent.ACTION_SEND);
                Uri blah = Uri.parse(selectedImagePath);
                i.setType("image/*");     
                i.putExtra(Intent.EXTRA_STREAM, blah);  
                startActivity(Intent.createChooser(i, "title")); // TODO Auto-generated method stub
                break;
            case R.id.button2:
                Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(intent, PICK_FROM_FILE);
                break;
        }
    }

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK){
        if(requestCode == PICK_FROM_FILE){
            imageUri = data.getData();
            //gotimage.setImageURI(selectedImageUri);
            selectedImagePath = getPath(imageUri);
    }
}

}

private String getPath(Uri selectedImageUri) {
    // TODO Auto-generated method stub
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(imageUri, projection, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

}

私は他の質問でみんなのコードを見てきましたが、ファイルパスを使用するように言っているのを見ました.action_send関数を使用してこれを行うにはどうすればよいですか?

どうもありがとう

4

2 に答える 2

0

次のように uri からファイル パスを取得できます。

public void getRealPathFromURI(Uri contentUri) {
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
       String filepath= cursor.getString(column_index);
    }

クラスレベル変数でこの値を安全にしてから、ボタン1をクリックして文字列をこのメソッドに渡します

public void shareThisFile(String path){

    Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    Uri screenshotUri = Uri.parse(path);

    sharingIntent.setType("image/png");
    sharingIntent.putExtra(Intent.EXTRA_STREAM, path);
    startActivity(Intent.createChooser(sharingIntent, "Share image using"));
    }
于 2012-04-27T19:26:19.773 に答える
0

ファイルパスは次のように取得できます。

    public static Uri imgui;

    case R.id.button2:
        Intent choosePictureIntent = new Intent(Intent.ACTION_PICK,  
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);  
         startActivityForResult(choosePictureIntent, 0); 
    startActivityForResult(choosePictureIntent , 4);
    break;

     @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    if (resultCode == RESULT_OK) {  
         imgui = data.getData();  
    }  
}

    button1.setOnClickListener(new OnClickListener() {  
    @Override  
     public void onClick(View v) {  
    Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    sharingIntent.setType("image/png");
    sharingIntent.putExtra(Intent.EXTRA_STREAM, imgui);
    startActivity(Intent.createChooser(sharingIntent, "Share image using"));

     }  
    }); 
于 2012-04-27T19:35:55.850 に答える