5824
以前よりTwitterで投稿する際に`Drawable`フォルダから画像を指定して投稿する方法が分からず困っています。そもそもそういうことができるのでしょうか？  
Twitterに画像を投稿する際は`File`指定しないといけないので、現在は以下のように一旦内部ストレージに画像を保存してからTwitterに画像を投稿させているのですが、新たに画像を添付させるためにはこういう方法しかないのでしょうか？どなたか分かる方がいればお助けいただきたいです。すみませんが、宜しくお願いします。

画像保存

```

        public void createImageFile() {
            String path = Environment.getExternalStorageDirectory().getPath() + "/image.png";
            File file = new File(path);
    
            if (!file.exists()) {
                try {
                    FileOutputStream outputStream = new FileOutputStream(path, false);
                    Bitmap bitmap = TwitterContents.getInstance().getmImage();
                    bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
```

画像付きツイート

```

                File file = new File(Environment.getExternalStorageDirectory().getPath() + "/image.png");
                StatusUpdate status = new StatusUpdate(params[0]); {
                    status.setMedia(file);
                }
                mTwitter.updateStatus(status);
    
```
CC BY-SA 3.0
2015-02-02T09:12:10.090
5777
2015-02-06T16:28:59.157
5210
question
android twitter4j
Twitterで投稿する際の添付画像をDrawableフォルダから選択する
掲題の`画像付きツイート`について、[Twitter4Jのメソッドで、引数にinputStreamを取るsetMedia](http://twitter4j.org/javadoc/twitter4j/StatusUpdate.html#setMedia-
java.lang.String-java.io.InputStream-)があるらしいので書き換えてみました。  
動かしてないので動作保証はできないです。予め申し訳ありません。  
[Create a file from
drawable](https://stackoverflow.com/questions/5895073/create-a-file-from-
drawable)の@muditさんの回答を参考にしています。

`drawable`フォルダの直下にimage.pngがあると仮定しています。

```

        try {
            InputStream inputStream = getResources().openRawResource(R.drawable.image);
            StatusUpdate status = new StatusUpdate(params[0]);
            status.setMedia("iamge", inputStream);
            inputStream.close();
            mTwitter.updateStatus(status);
        } catch (IOException e) {
    
        }
    
```

`R.drawable.image`は
[MediaPlayerでrawフォルダの音声ファイルが再生できない](https://ja.stackoverflow.com/questions/4402/mediaplayer%E3%81%A7raw%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E9%9F%B3%E5%A3%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E5%86%8D%E7%94%9F%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)
あたりを参照しつつ、適当に書き換えてください。  
以上、よろしくお願いいたします。
CC BY-SA 3.0
2015-02-02T13:26:06.457
5789
2015-02-06T16:28:59.157
2017-05-23T12:38:55.307
-1
2904
5777
answer
以下のようなコードにすることで、`res/drawable`にある画像をツイートに添付できるようになりました。

```

        public void share() {
            AsyncTask<String, Void, Boolean> task = new AsyncTask<String, Void, Boolean>() {
                InputStream inputStream;
    
                @Override
                protected Boolean doInBackground(String... params) {
                    try {
                        inputStream = mActivity.getResources().openRawResource(+ R.drawable.androidlogo);
                        StatusUpdate status = new StatusUpdate(params[0]);
                        status.setMedia("androidlogo", inputStream);
                        mTwitter.updateStatus(status);
                        return true;
                    } catch (TwitterException e) {
                        e.printStackTrace();
                        return false;
                    } finally {
                        try {
                            inputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
    
```
CC BY-SA 3.0
2015-02-03T04:59:45.950
5824
2015-02-03T04:59:45.950
5210
5777
answer