2011-06-02 10 views
7

मुझे अपने आवेदन में अनुमतियों में कोई समस्या है। ऐसा लगता है कि मेरे ऐप को स्टोरेज पर फाइलें बनाने की अनुमति नहीं है।एंड्रॉइड ओपनफाइलऑटपुट - स्टोरेज बनाने की कोई अनुमति नहीं

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

try 
{ 
    fos = getApplicationContext() 
      .openFileOutput(FILENAME, Context.MODE_PRIVATE);  
    fos.write(string.getBytes()); 
    fos.close(); 
} 
catch (Exception e) 
{ 
    e.printStackTrace(); 
} 

अपने मुख्य वर्ग onCreate हैंडलर में, और मैं हमेशा मिलती है:

06-02 13:23:52.996: WARN/ApplicationContext(6278): Unable to create files directory 
06-02 13:23:54.203: WARN/System.err(6278): java.lang.NullPointerException 
06-02 13:23:54.226: WARN/System.err(6278):  at android.app.ContextImpl.openFileOutput(ContextImpl.java:464) 
06-02 13:23:54.234: WARN/ActivityManager(2470): Activity idle timeout for HistoryRecord{485ebe10 com.servision.svclient/.Main} 
06-02 13:23:54.257: WARN/System.err(6278):  at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:158) 
06-02 13:23:54.273: WARN/System.err(6278):  at com.servision.svclient.Main.onCreate(Main.java:59) 
06-02 13:23:54.277: WARN/System.err(6278):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
06-02 13:23:54.285: WARN/System.err(6278):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
06-02 13:23:54.293: WARN/System.err(6278):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
06-02 13:23:54.296: WARN/System.err(6278):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
06-02 13:23:54.304: WARN/System.err(6278):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
06-02 13:23:54.312: WARN/System.err(6278):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-02 13:23:54.320: WARN/System.err(6278):  at android.os.Looper.loop(Looper.java:123) 
06-02 13:23:54.324: WARN/System.err(6278):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
06-02 13:23:54.332: WARN/System.err(6278):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-02 13:23:54.336: WARN/System.err(6278):  at java.lang.reflect.Method.invoke(Method.java:521) 
06-02 13:23:54.343: WARN/System.err(6278):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
06-02 13:23:54.355: WARN/System.err(6278):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
06-02 13:23:54.359: WARN/System.err(6278):  at dalvik.system.NativeStart.main(Native Method) 

जवाब में।

मुझे विश्वास है कि यह मेरी परियोजना की परिभाषाओं में बहुत आसान है। लेकिन मैं यह नहीं समझ सकता कि यह क्या है।

यदि मैं एक और प्रोजेक्ट बनाता हूं और इसमें एक ही कोड डालता हूं, तो यह ठीक काम करता है।

मेरी मैनिफ़ेस्ट फ़ाइल इस तरह दिखता है:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.servision.svclient" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 


    <application android:icon="@drawable/main" android:label="@string/app_name" android:debuggable="true"> 
    <activity android:name=".Main" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> 
     <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".StreamActivity" android:label="@string/app_name"/>   
    <activity android:name=".MainActivity"/> 
    <activity android:name=".GatewayList"/> 
    <activity android:name=".StatisticsActivity"/> 
    <activity android:name=".SettingsActivity"/> 
    <activity android:name=".MapsActivity"/> 
    <activity android:name=".AboutActivity"/> 
    </application> 
    <uses-sdk android:minSdkVersion="8" /> 


</manifest> 
+1

मेन.जावा –

+0

की आपकी लाइन 59 में क्या है, मुझे सच में नहीं लगता कि आंतरिक संग्रहण को अनुमति की आवश्यकता है। पोस्ट स्टैक ट्रेस भरा हुआ है? या आप लाइनों को छोड़ रहे हैं। – doNotCheckMyBlog

+1

एंड्रॉइड.permission.WRITE_INTERNAL_STORAGE –

उत्तर

0

फ़ाइल आप निश्चित रूप से मोबाइल संग्रहण की एक्सेस कर रहे है? आपने WRITE_EXTERNAL_STORAGE अनुमति की घोषणा नहीं की है। आपको इसे एसडीकार्ड

+1

हाँ जैसी कोई अनुमति नहीं है, हाँ, यह है, इसमें कोई रास्ता नहीं है, इसलिए मुझे लगता है कि यह आंतरिक संग्रहण पर बनाया जाएगा, और यदि मैं WRITE_EXTERNAL_STORAGE जोड़ता हूं, तो भी यह – AlexS

+0

पर काम नहीं करेगा, मैंने इस समस्या को हल किया मैन्युअल रूप से डिवाइस से पूरे एप्लिकेशन फ़ोल्डर को हटाकर। – AlexS

+0

openFileOutput() ** आंतरिक ** संग्रहण पर एक पथ देता है। –

0

पर लिखने की आवश्यकता होगी आपके FILENAME चर गलत है: FILENAME का मूल्य क्या है?

यह त्रुटि तब होती है क्योंकि आपके FILENAME चर परिणामों के आधार पर फ़ाइल को openFileOutput के अंदर एक शून्य मान में आधारित फ़ाइल बनाने का प्रयास होता है। तो FILENAME वैध फ़ाइल नहीं बना रहा है।

+1

FILENAME का मान "file_ouput" है, लेकिन अगर मैं इसे हार्डकोडेड स्ट्रिंग में बदलता हूं, तो "परीक्षण" कहें, इससे कोई फर्क नहीं पड़ता, यह अभी भी असफल हो जाएगा। – AlexS

+1

मैंने डिवाइस से पूरे एप्लिकेशन फ़ोल्डर को मैन्युअल रूप से हटाकर इस समस्या को हल किया। – AlexS

+0

आह, क्या आपने हस्ताक्षर प्रमाणपत्र बदल दिया? यदि आप किसी भिन्न प्रमाणपत्र के साथ ऐप पर हस्ताक्षर करते हैं (उदाहरण के लिए, यदि आपका डीबग प्रमाणपत्र समाप्त हो जाता है और आप एक नया उत्पन्न करते हैं या यदि आप रिलीज प्रमाण का उपयोग करते हैं) तो अंतर्निहित निर्देशिका पर स्वामित्व बदल जाएगा। शून्य सूचक एक अजीब त्रुटि है, हालांकि ... – Femi

3

डिवाइस प्रबंधन => डिवाइस पर राइट-क्लिक करें => अनइंस्टॉल करें ऐप => पुन: चलाएं।

+1

हटाएं जबकि यह विचार थोड़ा यादृच्छिक महसूस कर सकता है, यह एक अच्छा है।"फाइल निर्देशिका बनाने में असमर्थ" शायद एक सिस्टम-स्तरीय त्रुटि है जिसके परिणामस्वरूप डिवाइस के इंस्टॉल किए गए ऐप्स की सूची स्वयं के साथ असंगत हो रही है, इस प्रकार ** ऐप को हटाने और पुनर्स्थापित करना वास्तव में कार्रवाई का सबसे उपयुक्त तरीका हो सकता है। कम से कम ऐसा लगता है कि समस्या स्वयं एप्लिकेशन के कोड में नहीं है। –

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