2

以下のように、画像として MIME タイプのアクティビティを作成しました。

<activity android:name=".xxxx"                        
            android:launchMode="singleTop"
            android:excludeFromRecents="true"
            android:configChanges="orientation|screenSize|keyboardHidden"
            android:theme="@style/AppTheme">                        
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:host="xxxx.xxxx.net"></data>
                 <data android:mimeType="image/*" />            
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CHOOSER" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:host="xxxx.xxxx.net"/>
                 <data android:mimeType="image/*" />
            </intent-filter>
            </activity>  

ユーザーが写真をクリックしてギャラリーに移動し、私のアプリを共有すると、そこに来て、クリックすると上記のアクティビティを起動できます...私の質問は、その画像のパスを取得する方法ですか?

4

2 に答える 2

6

これにより、 .xxxxの Uri インスタンスのパスが得られます。 Activity

Uri uri = (Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM);

次に、画像を で表示する必要がある場合は、次ImageViewを使用します。

imageView.setImageURI(uri);

オプションコード:

デバイス上の画像の絶対パスも必要な場合(TwitPic API を使用して Twitter に画像をアップロードするときにこれが必要な制約であることがわかりました)、次のコードはデバイス上の画像の絶対パスFileを実例。このビットは OP では不明確であるため、少し余分なコードを追加しても問題はないと考えました。;-)

// PASS THE URI INSTANCE FROM THE CODE ABOVE IN THE CONSTRUCTOR
File file = new File(getRealPathFromURI(uri));

そして方法getRealPathFromURI(Uri uri)

public String getRealPathFromURI(Uri uri) {
    Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
    cursor.moveToFirst(); 
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
    return cursor.getString(idx); 
}

File ファイル インスタンスを使用してイメージを設定するには、次のようにします。

imageView.setImageUri(Uri.fromFile(file));
于 2013-04-15T10:37:36.290 に答える
0
protected void onActivityResult(int requestCode, int resultCode,
        Intent resultData) {
    super.onActivityResult(requestCode, resultCode, resultData);

    Uri selectedImage = resultData.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

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

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

            uploadImagePath = cursor.getString(columnIndex);
            bitmapUploadImage = BitmapFactory.decodeFile(uploadImagePath);
            profileImageView.setImageBitmap(bitmapUploadImage);
            cursor.close();

}
于 2013-04-15T10:36:37.387 に答える