2012-06-25 3 views
7

पर फ़ाइल अनुमति कैसे सेट करूं मैं अपने एंड्रॉइड एप्लिकेशन के कैश में एक ऑडियो फ़ाइल डाउनलोड कर रहा हूं जिसे मीडियाप्लेयर के साथ एक्सेस किया जाना चाहिए। फ़ाइल -rw ------- (जैसा कि ग्रहण फ़ाइल एक्सप्लोरर में देखा गया है) की अनुमतियों के साथ बनाई गई है।मैं MODE_WORLD_READABLE

इन अनुमतियों के साथ, MediaPlayer ऑडियो फ़ाइल तक नहीं पहुंच सकता है। विफलता के रूप में logcat में दिखाया गया है:

java.io.IOException: Prepare failed.: status=0x1 

मेरे ऐप का लक्ष्य एक एपीआई स्तर 8.

मैं कैसे डाउनलोड की गई ऑडियो फ़ाइल की अनुमतियों की यह MediaPlayer द्वारा पठनीय बनाने के लिए कैसे निर्धारित करूँ?

FileOutputStream out = new FileOutputStream(fRecording); 

जब मैं MODE_WORLD_READABLE के रूप में फ़ाइल बनाने का प्रयास करें, कोई फ़ाइल बनाई गई है:

FileOutputStream out = activity.openFileOutput(fRecording.getAbsolutePath(), Activity.MODE_WORLD_READABLE); 

logcat openFileOutput का उपयोग कर त्रुटि है

वैसे, मैं के साथ फ़ाइल बनाने हूँ :

java.lang.IllegalArgumentException: File /data/data/com.calltrunk.android/cache/727adda7-0ef1-490f-9853-fe13ad1e9416 contains a path separator 
+0

करने के लिए "FileOutputStream बाहर = activity.openFileOutput (fRecording, गतिविधि .MODE_WORLD_READABLE); " मुझे संदर्भ में "ओपनफाइलऑटपुट (स्ट्रिंग, int) विधि में एक्सेप्शन (फ़ाइल, int) विधि के लिए लागू नहीं है" फ़ाइल, int) " –

+0

यह होना चाहिए, FileOutputStream out = activity.openFileOutput (" <ऑडियो फ़ाइल नाम> ", गतिविधि। MODE_WORLD_READABLE); – user370305

+0

फ़ाइल को सही अनुमतियों के साथ बनाया गया है, लेकिन ऐसा लगता है कि कैश से "स्वचालित रूप से" मेरे एप्लिकेशन के भीतर फ़ाइलों में स्थानांतरित हो जाता है। मैं एक नया सवाल शुरू करूंगा। –

उत्तर

3
  • फ़ाइल के नाम और ऑपरेटिंग मोड के साथ openFileOutput() पर कॉल करें। यह FileOutputStream को अनुमति MODE_WORLD_READABLE के साथ देता है।

  • write() के साथ फ़ाइल में लिखें।

  • close() के साथ स्ट्रीम बंद करें।

उदाहरण के लिए: (कोड txt फ़ाइल के लिए, अपने मामले में अपनी एक ऑडियो फ़ाइल यह के अनुसार परिवर्तन करने)

String FILENAME = "hello_file"; 
String string = "hello world!"; 

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE); 
fos.write(string.getBytes()); 
fos.close(); 
+0

यदि आप फ़ाइल को पास करना चाहते हैं तो आपको फ़ाइल नाम की भी आवश्यकता है। जो आपको 'getFileStreamPath (FILENAME) के साथ मिलता है; ' – Martin

2

एपीआई 9 File वस्तु के साथ शुरू setReadable विधि (भी setWritable है और setExecutable)। यह दो आर्ग संस्करण के रूप में अच्छी तरह से सभी उपयोगकर्ताओं के लिए पढ़ने के लिए अनुमति सेट किया जा सकता है है (यानी यह आपके मामले में -rw-r--r-- हो जाता है): जब मैं लाइन बदलने

File file = new File("path_to_your_file"); 
file.setReadable(true, false);