ubahnstation.net
Geschichten aus dem Untergrund

Dank eines Tipps von AndroidPIT bin ich auf Paranoid Android für das Galaxy Nexus gestoßen und musste selbiges natürlich mal installieren. Den (bisher) einzigen negativen Aspekt möchte ich gleich zu Beginn erwähnen: Paranoid Android zur Zeit leider nur für die Google Nexus Geräte verfügbar.

 

Dann mal los: Nach einigen Anfangsschwierigkeiten, die aber von einem veralteten TRWP Recovery herrührten, lief es nach einem Tag stabil und ruckelfrei. Wichtig: Aktuelles TRWP Recovery installieren und alle Daten vor der Installation löschen. Danach nur die Applikationsanwendungen und -daten aus dem Backup (das natürlich vorher erstellt werden sollte) wieder einspielen. Mit Clockworkmod Recovery konnten nicht alle Partitionen gelöscht werden.

 

Ich hab’s jetzt ca. zwei Wochen laufen und bin absolut begeistert. Es ist schnell, läuft stabil und bietet verschiedenen Funktionen, die ein Stock-ROM nicht bietet.

 

Screenshot_2014-02-01-13-25-14Die wichtigste Funktion, wie ich finde, ist die sog. App Privacy, durch die der Anwender einen etwas besseren Einblick in das Rechtesystem von Android bekommt.

 

App Privacy liefert zunächst mal einen Überblick darüber, welche Apps welche Rechte anfordern und ob sie diese überhaupt nutzen. Das Rechtekonzept von Android ist leider etwas grob strukturiert, so dass Apps Rechte für Funktionalitäten anfordern müssen, obwohl sie diese nicht oder nicht im vollen Umfang nutzen wollen. Ein Barcode Scanner benötigt z.B. Zugriff auf die Kamera, wird damit aber nichts böses anstellen wollen. Eine App, die für die Synchronisation von Kalendern und Kontakten gedacht ist, benötigt selbstverständlich Zugriff auf die Benutzerkonten. Auch wenn es schwerfällt, eine solche App zu installieren, wenn man nicht zufällig den Quellcode der App einsehen kann.

 

Sehr hilfreicScreenshot_2014-02-01-14-00-41h ist die Information, wann eine App zuletzt Gebrauch von einem ihr zugestandenen Recht gemacht hat und ob sie aktuell aktiv ist. Dadurch bekommt man überhaupt erstmal einen Eindruck, was diese Apps tun, wenn man sie unbeaufsichtigt im Hintergrund laufen lässt.

Im Fall der bei mir installierten Facebook App erstaunt es mich jedoch, dass sie noch nie (zumindest solange ich Paranoid Android installiert habe) auf meine Kontaktdaten zugegriffen hat.

 

 

Aber das ist noch nicht alles. App Privacy erlaubt es mir, bestimmten Apps einzelne Zugriffsrechte zu entziehen. Dadurch werden die Forderungen von Apps wie Facebook oder Twitter etwas entschärft und man hat ein etwas besseres Gefühl, diese Apps zu installieren.

 

So, also was passiert jetzt genau, wenn ich einer App, die z.B. auf meine Kontaktdaten zugreifen will, das  Recht dazu entziehe. Dazu habe ich mal eine kleine Testapp erstellt und sie alle meine Kontakte auslesen lassen.

public void fetchContacts() {
   ContentResolver contentResolver = mContext.getContentResolver();
   Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI,
          null,null, null, null);
   if (cursor.getCount() > 0) {
       while (cursor.moveToNext()) {
           String name = cursor.getString(cursor.getColumnIndex( 
                  ContactsContract.Contacts.DISPLAY_NAME ));
           Log.d(this.getClass().getName(), name);
       }
   }
}

 

Eine App, die den ContentResolver für den Zugriff auf die Kontaktdaten verwenden will, benötigt dazu die Permission „Kontakte lesen“ (android.permission.READ_CONTACTS).

 

Fehlt der App dieses Zugriffsrecht, wirft der ContentResolver bei Verwendung von .query(CONTENT_URI) eine Security Exception.

java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/contacts from pid=21723, uid=10097 requires android.permission.READ_CONTACTS, or grantUriPermission()

 

Das Verhalten beim selektiven Entzug der Permission READ_CONTACTS mit App Privacy ist jedoch anders. contentResolver.query(ContactsContract.Contacts.CONTENT_URI) liefert in diesem Fall einen Cursor mit 0 Einträgen. Dadurch wird verhindert, dass die App auf Informationen zugreifen kann, ohne dass sie aufgrund von nicht abgefangenen Exceptions abstürzt.

 

Ein Versuch mit den Zugriff auf Positionsdaten liefert ein ähnliches Ergebnis.  Der Aufruf von

mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);

ist zwar erfolgreich, der LocationManager liefert aber keine Positionsdaten.

 

Eigentlich eine sehr gute Lösung. Wer also gerne die Facebook-App auf die aktuelle Version, die einfach unmöglich viele Rechte für sich in Anspruch nehmen will, updaten möchte, sollte vorher Paranoid Android installieren.

 

 

 


Kommentare sind geschlossen.


Copyright © 2012 by Dimitri Brukakis - dimi (at) ubahnstation (dot) net
Powered by Wordpress