我想通過Intent
發送base64圖像。我讀過如果圖像很大,我需要先把它放到內部存儲器中,然後從它的路徑中檢索它,然後通過Intent
發送它。問題是,Android給我烤麪包是這樣的:如何通過Intent發送base64圖像?
上傳失敗,因爲它不包含數據。
我需要說的是,我的自定義WebView
,我通過了context
所做的一切。也許這是問題?我的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