Android openFileOutput - keine Berechtigung zum erstellen von Speicher -
Ich habe ein problem mit den Berechtigungen in meiner Anwendung. Es sieht aus wie meine app nicht über Berechtigungen zum erstellen von Dateien auf Speicher.
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();
}
In meiner main-Klasse onCreate-handler, und ich bekomme immer:
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)
Antwort.
Ich glaube, es ist etwas sehr einfach in den Definitionen ist von meinem Projekt. Aber ich kann nicht herausfinden, was es ist.
Ist, wenn ich ein anderes Projekt und setzen denselben code an, es funktioniert einwandfrei.
mein manifest-Datei sieht wie folgt aus:
<?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>
- Was ist in Ihrem line 59 Main.java
- Ich glaube nicht wirklich, dass der interne Speicher braucht eine Erlaubnis. ist der geposteten stack-trace ist voll? oder Sie weglassen Linien.
- Es gibt keine solche Erlaubnis, als android.die Genehmigung.WRITE_INTERNAL_STORAGE
InformationsquelleAutor AlexS | 2011-06-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Device management => mit der Rechten Maustaste auf Device => App Deinstallieren => Re-run.
Ist die Datei, die Sie sind auf jeden Fall auf den internen Speicher? Sie habe nicht erklärt, die WRITE_EXTERNAL_STORAGE-Berechtigung. Sie müssten in diesem schreiben auf die sdcard
Ihre
FILENAME
variable ist falsch: was ist der Wert, der mit dem Namen?Dieser Fehler tritt auf, weil ein Versuch, zu produzieren, eine Datei auf der Grundlage Ihrer DATEINAME, variable führt einen null-Wert in
openFileOutput
. Also mit dem Namen ist kein gültiges Datei.