Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

16.07.2017, 23:30

Android Lesen und Schreiben in File.

Hallo zusammen.

Ich habe ein Spiel für Android programiert und möchte das Save-Game anlegen.

Mein Problem ist folgendes.

Auf den Emulatoren in Android Studio Android-Versionen von 4.2 bis 7 und auf meinem Samsung Galaxy Tab 2 Android 4.2.2 funktioniert das Einwandfrei.
Aber auf meinem Android Galaxy S6 nicht.
Habe daraufhin mein altes Galaxy S5 aus der Schublade gekruschtelt und darauf funzt es auch nicht.

Es wird kein Directory erstellt und die Datei wird nicht angelegt.

Dies ist meine Manifest Datei.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.Factory">


    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="25"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="Burger Factory"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="Burger Factory"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

.....

        <activity
            android:name=".Bilanzen2Activity"
            android:label="@string/app_name"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" />
    </application>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

</manifest>


In der Quelltext Datei habe ich folgende Zeilen.

Zum Schreiben.

Quellcode

1
2
3
4
        dirs=new File(Environment.getExternalStorageDirectory() + "/Burger Factory/");
            dirs.mkdirs();
            file = new FileOutputStream(Environment.getExternalStorageDirectory() + "/Burger Factory/Save");
            DataOutputStream dos = new DataOutputStream(file);


und zum Lesen.

Quellcode

1
2
3
4
            FileInputStream file = new FileInputStream(Environment.getExternalStorageDirectory() + "/Burger Factory/Save");
            try {

                DataInputStream dos = new DataInputStream(file);


Kann mir jemand da weiterhelfen.

Vielen Dank.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

17.07.2017, 06:34

Haben deine beden Test-Geräte denn external Storage? Was genau passiert denn, wenn du das ausführst? Bekommst du eine Exception? Wenn ja, welche? Wenn nein, wo schaust du denn nach, also wo suchst du die Datei? Hast du das Phone nach dem Anlegen der Datei ab- und wieder angestöpselt?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

17.07.2017, 10:22

Die app soll in die "Device storage" schreiben.
Dort wird beim Lesen auch danach gesucht.
Falls du mit External storage die sd-card meinst. Eine solche befindet sich momentan in keinem der Geräte.

Das Log gibt mir folgendes aus.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
01-12 05:25:32.667 3840-3840/? W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)
01-12 05:25:32.667 3840-3840/? W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
01-12 05:25:32.667 3840-3840/? W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:127)
01-12 05:25:32.667 3840-3840/? W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
01-12 05:25:32.667 3840-3840/? W/System.err:     at com.Factory.GameClass.writeSavegame(GameClass.java:421)
01-12 05:25:32.667 3840-3840/? W/System.err:     at com.Factory.MainActivity$1.onClick(MainActivity.java:126)
01-12 05:25:32.667 3840-3840/? W/System.err:     at android.view.View.performClick(View.java:5697)
01-12 05:25:32.667 3840-3840/? W/System.err:     at android.widget.TextView.performClick(TextView.java:10826)
01-12 05:25:32.667 3840-3840/? W/System.err:     at android.view.View$PerformClick.run(View.java:22526)
01-12 05:25:32.667 3840-3840/? W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
01-12 05:25:32.667 3840-3840/? W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
01-12 05:25:32.667 3840-3840/? W/System.err:     at android.os.Looper.loop(Looper.java:158)
01-12 05:25:32.667 3840-3840/? W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:7224)
01-12 05:25:32.667 3840-3840/? W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
01-12 05:25:32.667 3840-3840/? W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
01-12 05:25:32.667 3840-3840/? W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
01-12 05:25:32.667 3840-3840/? W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
01-12 05:25:32.667 3840-3840/? W/System.err:     at libcore.io.Posix.open(Native Method)
01-12 05:25:32.667 3840-3840/? W/System.err:     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
01-12 05:25:32.667 3840-3840/? W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:438)
01-12 05:25:32.667 3840-3840/? W/System.err:    ... 15 more


Danke.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

17.07.2017, 10:25

Falls du mit External storage die sd-card meinst. Eine solche befindet sich momentan in keinem der Geräte.
Das ist natürlich schlecht, weil du dich bei deinem Code explizit auf den ExternalStorage beziehst. Sprich im Normalfall auf eine SD-Karte.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

17.07.2017, 10:57

Fakt ist ich finde überall im Netz nur den zugriff auf den Device Storage über Environment.getExternalStorageDirectory().
Wie kann ich es Erreichen das er ohne diese Zeile z.B. in das Documents-Directory schreibt.
Ausserdem funzt das auf meinem Galaxy Tab 2 (auch ohne SD-Card) sehr gut.
Auf den beiden Galaxy Smartphones aber nicht.

Danke.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

17.07.2017, 12:02

Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »BlueCobold« (17.07.2017, 12:14)


Werbeanzeige