मेरे पास एक ऐप है जो जीआईएफ छवियों को दिखाता है। यह सब ठीक काम करता है, तो छवि drawable में सहेजा गया है, और मैं इसे इसIOException - फ़ाइल लोड नहीं कर सकता
is=context.getResources().openRawResource(R.drawable.mygif);
movie = Movie.decodeStream(is);
तरह का उपयोग लेकिन मैं इंटरनेट से छवि डाउनलोड करने की आवश्यकता है, इसलिए मैं यह CacheDir लिए बचत कर रहा हूँ, कि ठीक काम करता है। मैंने इसे पढ़ने के लिए निम्नलिखित कोशिश की।
try
{
is = new BufferedInputStream(new FileInputStream(new File(context.getCacheDir(), "mygif.gif")));
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
movie = Movie.decodeStream(is);
और यह
movie = Movie.decodeFile(new File(context.getCacheDir(), "mygif.gif").getPath());
लेकिन कोई बात नहीं क्या, यह
java.io.IOException
at java.io.InputStream.reset(InputStream.java:218)
at android.graphics.Movie.decodeStream(Native Method)
at android.graphics.Movie.decodeTempStream(Movie.java:74)
at android.graphics.Movie.decodeFile(Movie.java:59)
या
java.io.IOException: Mark has been invalidated.
at java.io.BufferedInputStream.reset(BufferedInputStream.java:350)
at android.graphics.Movie.decodeStream(Native Method)
साथ समाप्त होता है मुझे लगता है कि यह एक बहुत ही सरल त्रुटि है, लेकिन मैं यह कर सकते हैं इसे खत्म नहीं करें। प्रकट होते हैं:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
आपको यह जांचना चाहिए कि डाउनलोड-एंड-सेव भाग फ़ाइल को दूषित कर रहा है या नहीं। ऐप फ़ाइल डाउनलोड करने के बाद, आप इसे 'adb pull 'का उपयोग करके एमुलेटर या डिवाइस से खींच सकते हैं। फिर आप जांच सकते हैं कि यह सर्वर पर क्या है। –
मैंने इसे एमुलेटर से खींच लिया, और यह ठीक है। छवि 13kB है यदि यह किसी भी तरह से महत्वपूर्ण है –
क्या आपने 'Movie.decodeFile (नई फ़ाइल (context.getCacheDir()," mygif.gif ") की कोशिश की है। GetAbsolutePath())'? –