0

我正在创建一个游戏,并试图让用户通过 text/facebook/etc 分享他们的胜利。我正在使用下面的代码从我的 res/drawable 文件夹中获取图像。我很确定我做对了,但是在我选择发送方法(例如 facebook)后,我的应用程序不断崩溃。任何帮助将不胜感激。

Intent ShareIntent = new Intent(android.content.Intent.ACTION_SEND);
ShareIntent.setType("image/jpeg");
Uri winnerPic = Uri.parse("android.resource://com.poop.pals/" + R.drawable.winnerpic);
ShareIntent.putExtra(Intent.EXTRA_STREAM, winnerPic);
startActivity(ShareIntent);
4

1 回答 1

1

您的应用只能通过资源 api 访问 Android 的资源,文件系统上没有您可以通过其他方式打开的常规文件。

您可以做的是将文件从InputStream您可以获得的文件复制到其他应用程序可以访问的位置的常规文件中。

// copy R.drawable.winnerpic to /sdcard/winnerpic.png
File file = new File (Environment.getExternalStorageDirectory(), "winnerpic.png");
FileOutputStream output = null;
InputStream input = null;
try {
    output = new FileOutputStream(file);
    input = context.getResources().openRawResource(R.drawable.winnerpic);

    byte[] buffer = new byte[1024];
    int copied;
    while ((copied = input.read(buffer)) != -1) {
        output.write(buffer, 0, copied);
    }

} catch (FileNotFoundException e) {
    Log.e("OMG", "can't copy", e);
} catch (IOException e) {
    Log.e("OMG", "can't copy", e);
} finally {
    if (input != null) {
        try {
            input.close();
        } catch (IOException e) {
            // ignore
        }
    }
    if (output != null) {
        try {
            output.close();
        } catch (IOException e) {
            // ignore
        }
    }
}
于 2012-07-19T11:39:04.200 回答