2010-12-15 12 views
0

In meiner Anwendung muss ich einige Daten anzeigen, die mit Intent.ACTION_VIEW zugänglich sind. Problem ist in der einfachen Tatsache, dass ich ACTION_VIEW Intent Uri meiner Daten nicht übergeben kann, da Daten nicht in der Datei oder in der Netzressource - sie sind in verschlüsselter Datenbank sind. Ich muss entweder android.net.Uri Unterklasse oder finden Sie einen Weg und lehren ACTION_VIEW statt Uri akzeptieren einfach nur InputStream. Aber:Intent.ACTION_VIEW und Unterklassen android.net.Uri

  1. android.net.Uri nicht seit Uri subclassed werden() Konstruktor ist privat
  2. Intent.ACTION_VIEW nur ​​Uri als Daten akzeptiert (oder?)

Irgendwelche Ideen Wie löst man das Problem?

Antwort

0

Wenn Ihre "Daten" "in verschlüsselter Datenbank" sind, müssen Sie Ihre eigene Aktivität schreiben, um diese Daten anzuzeigen. Da es Ihre eigene Aktivität ist, wird es in der Lage sein, auf die "verschlüsselte Datenbank" zuzugreifen.

+0

Ja, das ist eine Option, aber ich würde gerne integrierte Viewer verwenden, weil die Datentypen der Mime-Typen unterschiedlich sein können und ich nicht (und ich will nicht) alle möglichen Viewer neu schreiben kann. Wahrscheinlich gibt es einige Möglichkeiten, wie man Hooks/Callback zu den verfügbaren Viewern bekommt und sie entschlüsselte Daten überträgt? – barmaley

+0

@barmaley: Nicht wirklich. Sie könnten einen Inhaltsanbieter verfügbar machen, der ihnen entschlüsselten Zugriff gewährt, aber dann kann jeder auf den Inhaltsanbieter zugreifen und den Wert Ihrer Verschlüsselung vereiteln. Oder Sie könnten die entschlüsselte Datei in eine Datei schreiben und ihnen ein 'Uri' geben, aber dann kann jeder zu dieser Datei gelangen, wenn sie den Pfad erraten. – CommonsWare

+0

Ich habe bereits 2. getan - ich entschlüsseln dann speichern in temporäre Datei, aber in diesem Fall gibt es Sicherheitsverletzung - temporäre Datei kann später wiederhergestellt werden (siehe hier http://stackoverflow.com/questions/4448772/safely-wipe- Datei-Inhalt). Wie wäre es mit 1. Option: Könnte ein bisschen mehr im Detail erklären, wie man es realisiert? Vielen Dank im Voraus – barmaley

Verwandte Themen