2010-12-22 6 views
2

Ich habe verschlüsselten Speicher (SQLite) und möchte meinen eigenen ContentProvider implementieren. Voraussetzung ist:Benutzerdefinierter ContentProvider für verschlüsselten Speicher

  • Zugang/möglich gewährt werden soll nur, wenn Werke/meine Anwendung gestartet - in allen anderen Fällen Zugang hat zu Benutzer/Anwendung einig intelligente Nachricht/Return-Code
Rückkehr verweigert werden

Die Frage ist also: ist es möglich? Wenn ja, bitte gib mir ein paar Tipps, wie ich anfangen soll.

+0

Ich bin mir nicht sicher, also frage ich: Möchten Sie Ihre Daten in anderen Apps veröffentlichen oder nicht? – WarrenFaith

+0

@WarrenFaith Es hängt von der Sicherheit ab. Wenn ich sie veröffentlichen kann, ohne gesicherte Daten zu manipulieren, dann - möchte ich. Wenn nicht, mag ich es nicht. – barmaley

Antwort

1

Ein ContentProvider kann keine Fehlermeldung direkt anzeigen, er kann jedoch eine RuntimeException auslösen und Sie schreiben die gewünschte Nachricht in die RuntimeException. Die RuntimeException wird parzelliert und an den Aufrufer gesendet, wer auch immer dies sein mag, es liegt an ihnen, die Ausnahme in ihrem Code zu behandeln.

Ich bin nicht 100% klar, was Sie meinen "nur wenn funktioniert/meine Anwendung gestartet". Leider hat ContentProvider keine einfache Möglichkeit, mit der Außenwelt zu kommunizieren: Sie können nicht an einen Service binden, Absichten senden, das Application-Objekt abrufen usw. Wenn Ihr ContentProvider im selben Prozess (und damit auch in demselben DalvikVM) läuft wie

public class MyApp extends Activity { 
    /** True when my app is running, can be accessed by anyone in this process */ 
    public static boolean myAppIsRunning = false; 
} 

Siehe http://developer.android.com/guide/topics/manifest/provider-element.html#proc auf die Kontrolle Contentprovider Prozess zur Info: Ihre Anwendung dann können sie miteinander durch öffentliche statische Felder und Methoden zum Beispiel kommunizieren.

Viel Glück.

1

Ich bin mir nicht sicher, ob ich Ihre Frage vollständig verstanden habe, damit diese Antwort nicht für Sie funktioniert.

Wenn Sie möchten, dass der Benutzer auswählen kann, welche Anwendungen auf die Daten zugreifen können, sehen Sie sich die eigenen Berechtigungen an, die andere Anwendungen wie jede andere Android-Berechtigung anfordern können.

http://developer.android.com/guide/topics/manifest/permission-element.html

+0

Sorry, es ist ein bisschen anders, als das, was ich suche – barmaley

0

Warum brauchen Sie die Contentprovider? Der Hauptzweck von Inhaltsanbietern ist die gemeinsame Nutzung von Daten. Wenn Sie Daten mit anderen Apps von Ihnen auf die von Ihnen erwähnte Weise teilen möchten, könnten Sie vielleicht Android Remote Services für Datenzugriff verwenden. Es ist nicht so schön wie bei Content Providern, aber ich habe keine andere Idee mit Ihrem Anwendungsfall.

+0

OK, lassen Sie mich erklären. Es gibt verschlüsselten Speicher, der Video oder JPEG-Bild enthält. Ich möchte integrierte ACTION_VIEW-Intents zum Anzeigen von Videos und Bildern verwenden. Diese Absichten erhalten als Eingabe nur URIs - mit anderen Worten, um spezifische URIs zu behandeln, muss ich einen Inhaltsanbieter bereitstellen. Ist das klar? – barmaley

+0

ah okay, ich verstehe – ludwigm

Verwandte Themen