Ответ 1
Я не уверен, но согласно вашему требованию вы должны сначала открыть свой GIF, а затем после преобразования в байтовый массив, после сохранения его. Надеюсь, вы получите свое решение.
private void saveGIF()
{
try
{
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "shared_gif_shai" + System.currentTimeMillis() + ".gif");
long startTime = System.currentTimeMillis();
Log.d(TAG, "on do in background, url open connection");
InputStream is = getResources().openRawResource(R.drawable.g);
Log.d(TAG, "on do in background, url get input stream");
BufferedInputStream bis = new BufferedInputStream(is);
Log.d(TAG, "on do in background, create buffered input stream");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Log.d(TAG, "on do in background, create buffered array output stream");
byte[] img = new byte[1024];
int current = 0;
Log.d(TAG, "on do in background, write byte to baos");
while ((current = bis.read()) != -1) {
baos.write(current);
}
Log.d(TAG, "on do in background, done write");
Log.d(TAG, "on do in background, create fos");
FileOutputStream fos = new FileOutputStream(file);
fos.write(baos.toByteArray());
Log.d(TAG, "on do in background, write to fos");
fos.flush();
fos.close();
is.close();
Log.d(TAG, "on do in background, done write to fos");
}
catch (Exception e) {
e.printStackTrace();
}
}
И также дайте это разрешение в файле AndroidMenifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>