Anfänger Frage zu Android Permissions

S

Studdi23

Neues Mitglied
0
Hallo zusammen,

ich probiere gerade ein kleines Android Tutorial aus und hätte eine Frage zu den Permissions. Und zwar habe ich das NoteList Beispielprojekt importiert und deployed. Zuvor wurde die Manifest Datei etwas modifiziert da ich aus einem anderen Android Projekt heraus auf die Datenbank der NotesList-App schreibend zugreifen möchte und hierzu die XML um eine writePermission erweitert habe. Die Manifest Datei sieht nun folgendermaßen aus (Ausschnitt):
HTML:
<provider
            android:name="NotePadProvider"
            android:authorities="com.google.provider.NotePad"
            android:exported="false"
            android:grantUriPermissions="true"
            android:writePermission="com.example.android.notepad.READ_WRITE_NOTES" >
            <grant-uri-permission android:pathPattern=".*" />
        </provider>
Im zweiten Projekt habe ich diese Permission verwendet, um Testdaten in die notes-Tabelle einzufügen.

HTML:
<uses-permission android:name="com.example.android.notepad.READ_WRITE_NOTES" />
Code:
ContentValues values = new ContentValues();
          values.put("title", "New note");
          values.put("note", "This is a new note");
          ContentResolver contentResolver = activity.getContentResolver();
          List<String> ps = contentResolver.insert(Uri.parse("content://com.google.provider.NotePad/notes"), values)
            .getPathSegments();
          Log.i(getClass().getName(), "Inserted new Row with ID: " + ps.get(ps.size() - 1));
Wenn ich die App ausführe (Buttonklick schreibt Daten in die DB) erhalte ich eine SecurityException.
Es funktioniert lediglich wenn ich das exported flag auf true setze

HTML:
android:exported="true"
Dann allerdings werden die Permissions ignoriert was ich nicht möchte. Ich verstehe anscheindend die Bedeutung der permission Attribute nicht ganz bzw. wie sie richtig und sinnvoll eingesetzt werden. Das gilt vor allen Dingen für das Attribut grant-uri-permission. Wäre toll wenn mir das jemand, vielleicht anhand von Beispielen, erklären könnte.

Gruß
Mario
 
Ups, den Forenbereich hab ich wohl übersehen :D
Kann ich den Beitrag verschieben oder muß ich nen Doppelpost erstellen?
 
Ich schlage vor, du meldest den Beitrag (über das Ausrufezeichen) und lässt den verschieben (und dabei diese Posts auch gleich löschen :D)
 
Thread verschoben
 
Hallo,

also ich bin jetzt etwas weiter gekommen. Ich führe nun beide Applikation über den gleichen Prozess aus indem ich beiden Apps die gleiche sharedUserId vergebe. Die SecurityException ist dadurch verschwunden,dafür bekomme ich jetzt aber die Fehlermeldung das es sich um eine readonly Datenbank handelt. Es wurden jedoch sowohl write permission gesetzt als auch Schreibrechte auf Dateiebene vergeben, d.h. mit mit dem Befehl "chmod 777 note_pad.db" Hier der Stacktrace:

Code:
05-15 17:36:56.536: I/SqliteDatabaseCpp(567): sqlite returned: error code = 8, msg = statement aborts at 1: [BEGIN IMMEDIATE;] attempt to write a readonly database, db=/data/data/com.example.android.notepad/databases/note_pad.db
05-15 17:36:56.567: E/SQLiteDatabase(567): Error inserting created=1337103416544 title=New note note=This is a new note modified=1337103416544
05-15 17:36:56.567: E/SQLiteDatabase(567): android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database
...
Und hier noch die Dateidetails der note_pad.db zur Bestätigung:
Code:
-rwxrwxrwx app_40   app_40       4096 2012-05-13 16:02 note_pad.db
Ist denn kein Experte unter euch der mit weiterhelfen kann?

Gruß
Mario
 

Ähnliche Themen

D
Antworten
17
Aufrufe
427
datNeMo
D
A
Antworten
1
Aufrufe
587
swa00
swa00
B
Antworten
4
Aufrufe
509
bb321
B
Zurück
Oben Unten