У меня есть приложение GIF Maker, теперь я хочу поделиться этим GIF-файлом непосредственно из приложения с другими приложениями (GMAIL, WHATSAPP ETC)
Как отправить созданный GIF из приложения
Код, который я использую для сохранения GIF в Галерее / Телефоне
private void saveGif() {
new AsyncTask<Void, Integer, Void>() {
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(GifMakerActivity.this);
progressDialog.setMax(100);
progressDialog.setMessage("Please wait..");
progressDialog.setCancelable(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.show();
}
@Override
protected Void doInBackground(Void... voids) {
File filePath;
if (TextUtils.isEmpty(gifPath)) {
int random = (int) (Math.random() * 9000) + 1000;
File gifMaker = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Gif Maker");
if (!gifMaker.mkdir()) {
Log.e("GifMakerActivity: ", "Directory doesn't exist");
}
filePath = new File(gifMaker, "GifMaker_" + random + ".gif");
} else {
filePath = new File(gifPath);
}
try {
int size = bitmaps.size();
int w = bitmaps.get(0).getWidth();
int h = bitmaps.get(0).getHeight();
GifEncoder gifEncoder = new GifEncoder();
gifEncoder.init(w, h, filePath.getAbsolutePath(), GifEncoder.EncodingType.ENCODING_TYPE_FAST);
for (Bitmap bitmap : bitmaps) {
gifEncoder.encodeFrame(Bitmap.createScaledBitmap(bitmap, w, h, false), duration);
publishProgress(100/size);
}
gifEncoder.close();
} catch (FileNotFoundException e) {}
if (progressDialog.getProgress() <= progressDialog.getMax()) {
publishProgress(progressDialog.getMax() - progressDialog.getProgress());
}
/*ByteArrayOutputStream bos = new ByteArrayOutputStream();
AnimatedGifEncoder encoder = new AnimatedGifEncoder();
encoder.start(bos);
Log.d("duration: ", duration + "");
encoder.setDelay(duration);
encoder.setRepeat(0);
for (Bitmap bitmap : bitmaps) {
encoder.addFrame(bitmap);
}
encoder.finish();
FileOutputStream outputStream;
try {
outputStream = new FileOutputStream(gifMaker.getAbsolutePath());
outputStream.write(bos.toByteArray());
outputStream.flush();
outputStream.close();
bos.flush();
bos.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}*/
/*AnimatedGifWriter writer = new AnimatedGifWriter(true);
try {
OutputStream os = new FileOutputStream(gifMaker);
writer.prepareForWrite(os, -1, -1);
for (Bitmap bitmap : bitmaps) {
writer.writeFrame(os, bitmap);
}
writer.finishWrite(os);
} catch (Exception e) {
}*/
MediaScannerConnection.scanFile(GifMakerActivity.this,
new String[] { filePath.getAbsolutePath() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
//Log.i("ExternalStorage", "Scanned " + path + ":");
//Log.i("ExternalStorage", "-> uri=" + uri);
}
});
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressDialog.incrementProgressBy(values[0]);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
if (progressDialog.getProgress() == progressDialog.getMax()) {
progressDialog.dismiss();
sendcomletionnotification();
}
}
}.execute();
}
Как я могу поделиться GIF, который пользователь создает, и поделиться с другими приложениями
Есть ли способ, который я могу использовать, чтобы решитьэта ошибка.