2014-06-26 8 views
10

मेरी Android एप्लिकेशन में से एंड्रॉयड में आकस्मिक उन्मूलन से बचने के लिए मैंसुरक्षित रखें और असुरक्षित फ़ाइल bugged सफाई क्षुधा

FileOutputStream savedList = new FileOutputStream(Path); 

का उपयोग कर कुछ डेटा फ़ाइल MyApp नाम का एक फ़ोल्डर में में एसडी भंडारण

स्थित के साथ कुछ फ़ाइलों को सहेजने

दुर्भाग्य से मैं देखा है कुछ क्लीनर Apps, ठीक है, कार्यान्वित भी बहुत लोकप्रिय (जैसे CleanMaster) गलत तरीके से फ़ाइलें हर बार हटाने के उपयोगकर्ता एक अस्थायी \ कचरा फ़ाइल के कारण समस्याओं की सफाई प्रदर्शन नहीं कि।

वहाँ प्रोग्राम के रूप में की रक्षा के लिए (और लिखने के लिए असुरक्षित) फ़ाइल इससे बचने के लिए एक रास्ता है?

फाइल अनुमति कैसे बदलें?

चूंकि फ़ाइल स्वरूप को पहचानने के लिए फ़ाइल एक्सटेंशन का उपयोग नहीं किया जाता है, तो मैं फ़ाइल प्रारूप को निर्धारित करने के लिए उपयोग की जाने वाली फ़ाइल के मेटाडेटा को कैसे बदल सकता हूं ताकि ये फ़ाइल इन ऐप्स द्वारा दस्तावेज़ों के रूप में दिखाई दे? मुझे लगता है कि इन क्लीनर का स्कैन लिनक्स फ़ाइल प्रारूप पहचान के आधार पर कुछ रणनीति का उपयोग करता है और सभी ऑब्जेक्ट फ़ाइलों को हटा देता है।

+0

आप की कोशिश की है 'file.setWritabel (गलत)' – Praveen

उत्तर

0

अपने निजी आंतरिक ड्राइव करने के लिए लिखें यह है, इसलिए वे इसे छूने के लिए अनुमति नहीं है। एसडी कार्ड केवल FAT32 ड्राइव हैं, इसलिए वे फ़ाइल अनुमतियों या एक्सेस सूचियों का समर्थन नहीं करते हैं।

4.4 फ़ोन पर आप, ठीक है हो सकता है के रूप में गूगल मूल रूप से एक निजी निर्देशिका के बाहर एसडी कार्ड के लिए किसी भी लेखन से बचाता है। बेहतर या बदतर के लिए क्लीनर प्रकार ऐप्स बिल्कुल काम नहीं करेंगे।

+0

मैं आंतरिक स्मृति का उपयोग करने के बाद से कम अंत डिवाइस नहीं ज्यादा आंतरिक संग्रहण होता है से बचने के लिए पसंद करते हैं, लेकिन क्या निजी आंतरिक भंडारण पथ है? (इसके अलावा मैं सोच रहा हूं कि फ़ाइल को ज्ञात दस्तावेज़ प्रकार फ़ाइल की तरह फ़ाइल बनाने के लिए फ़ाइल स्वरूप को मास्क करने का कोई तरीका है) – AndreaF

+0

गतिविधि.getFilesDir() इसे वापस करता है। लेकिन यह/डेटा/डेटा/full_app_name निर्देशिका –

0

सबसे पहले, आपको this question का पहला उत्तर पढ़ना चाहिए। याद रखने की बात:

नहीं, पर्यावरण .getExternalStorageDirectory() जो डिवाइस निर्माता को "बाहरी भंडारण" माना जाता है, को संदर्भित करता है। कुछ उपकरणों पर, यह एक एसडी कार्ड की तरह हटाने योग्य मीडिया है। कुछ उपकरणों पर, यह ऑन-डिवाइस फ्लैश का एक हिस्सा है।

एसडी कार्ड एक अस्पष्ट धारणा है, यह 100% सुनिश्चित करना असंभव है कि आप एसडी कार्ड पर लिख रहे हैं।

यही बात कहा, आप एंड्रॉयड एपीआई का उपयोग /path/to/external/storage/whatever/it/is/on/the/device/Android/data/com.package.yourapp/files

उपयोग getExternalFilesDir में एप्लिकेशन के निजी निर्देशिका पर अपनी फ़ाइल, स्थित लिखने के लिए चाहिए ऊपर File हो और के निजी निर्देशिका पर अपनी फ़ाइल लिखने के लिए आपका ऐप, इस तरह, कोई भी इसे हटाने में सक्षम नहीं होगा।

+0

में होना चाहिए, मैं निजी निर्देशिका में लिखना नहीं चाहता हूं, और मुझे यह चाहिए कि उपयोगकर्ता इन फ़ाइलों की निर्देशिका तक आसानी से पहुंच सके, इसलिए यह महत्वपूर्ण नहीं है कि कोई है या नहीं भौतिक एसडी कार्ड या डिवाइस का वर्चुअल स्टोरेज एसडी। मुझे बस स्वचालित क्लीनर द्वारा रिमूशन से बचने की जरूरत है। – AndreaF

+0

एफएटी 32 फॉर्मेटेड ड्राइव अनुमतियों का समर्थन नहीं करते हैं। इसके अलावा, '/ path/to/external/storage/जो भी/it/on/the/डिवाइस/एंड्रॉइड/डेटा/com.package.yourapp/files' अन्य ऐप्स द्वारा सुलभ है, इसलिए उपयोगकर्ता इसे एक्सेस कर पाएंगे निर्देशिका। – ToYonos

+0

ठीक है, FAT32 अनुमति का समर्थन नहीं करता है ... हालांकि लिनक्स सिस्टम पर फ़ाइल प्रारूप निर्धारित करने के लिए मेटाडेटा के बारे में क्या उपयोग किया जाता है? ये क्लीनर मानते हैं कि सभी फाइलें जहां ऑब्जेक्ट्स संग्रहीत हैं, अस्थायी फ़ाइलें हैं। यदि फ़ाइल स्वरूपों को निर्धारित करने के लिए उपयोग किए गए मेटाडेटा को हल किया जाए तो समस्या हल होनी चाहिए। – AndreaF

1

एंड्रॉइड ऐप के लिए एसडी कार्ड पर निजी निर्देशिका रखने की अनुमति देता है। आप निम्नानुसार अपने ऐप के लिए निजी निर्देशिका का मार्ग प्राप्त कर सकते हैं।

फ़ाइल myDir = getExternalFilesDir (शून्य);

// null पैरामीटर इंगित करता है कि आप निर्देशिका में

myDir.mkdirs() फ़ाइलों के किसी भी प्रकार के स्टोर करने के लिए जा रहे हैं;

Log.d ("जानकारी", mydir।getPath());

यह एसडी कार्ड पर किसी भी निर्देशिका के समान है, केवल एक चीज यह है कि इस फ़ोल्डर पर डेटा स्टोर आपके ऐप के लिए निजी है और गैलरी जैसे कार्यक्रमों के लिए उपलब्ध नहीं है। डिवाइस से ऐप हटा दिए जाने पर फ़ोल्डर हटा दिया जाता है।

एंड्रॉइड दस्तावेज़ों से लिंक के बाद चेकआउट। http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)

+0

एंड्रॉइड दस्तावेज़ पृष्ठ से उद्धरण आपने getExternalFilesDir (शून्य) के लिए अनुशंसा की: "इन फ़ाइलों के साथ कोई सुरक्षा लागू नहीं है। उदाहरण के लिए, WRITE_EXTERNAL_STORAGE कोई भी एप्लिकेशन इन फ़ाइलों को लिख सकता है।" (या उन्हें हटाएं ...) – gregko

संबंधित मुद्दे