Intent
でbase64イメージを送信しようとしています。画像が大きい場合は、最初に内部ストレージに保存してから、パスから取り出してIntent
に送信する必要があります。問題は、アンドロイドが次のように私にトーストを与えているということです。Intentを通してbase64イメージを送信するには?
アップロードに失敗しました。データが含まれていないためアップロードできませんでした。
私はcontext
に合格した私のカスタムWebView
ですべてが行われていると言います。多分それは問題ですか?私のAPIは、私がここにコードを入れて21です:
this.webView.setDownloadListener((new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
try {
if(url != null) {
FileOutputStream fos;
fos = context.openFileOutput("image.png", Context.MODE_PRIVATE);
byte[] decodedStr = Base64.decode(url, Base64.DEFAULT);
fos.write(decodedStr);
Intent sendIntent = new Intent();
sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("file://" + context.getFilesDir() + "/chart.png")));
sendIntent.setType("image/png");
getContext().startActivity(sendIntent);
fos.flush();
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}));
マイbase64では、次のようになります。
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArgAAAIACAYAAABpWR83AAAgAElEQVR4Xux9B3xU15X+ESBUEEIVgbpAgCq9V9tg3B1jO3FLcUnsuCa2s7v/TeJksym7yaa6pttOcY2Nu8
それははるかに長いです。私はちょうどここに私の質問をより読みやすくするためのカットバージョンを入れました。
ありがとうございました!
@EDIT
私は彼が達成するために何を望んでいるかは明らかではないことを感じています。私はこのチュートリアルを利用作ってるんだ:https://developer.android.com/training/sharing/send.html しかし、異なっているものがあるbase64で画像
** @ EDIT 2 **
変更方法putExtra()
に今他のアプリは、画像を読み取ることができませんが
うん、わかってるよ。だから、イメージをインテントに直接送信するのではなく、内部ストレージを使用しているのです。 – soommy12