Zugriff auf benutzerdefinierte Inhalte-Anbieter aus verschiedenen app
Hallo, ich habe erstellt eine android app, die mithilfe eines eigenen content-provider namens CustomCP,
es implementiert alle Methoden und alles funktioniert, während die Verwaltung der Daten innerhalb der app
aber wenn ich versuche, es von einer anderen app bekomme ich immer eine Fehlermeldung " Fehler beim finden
provider-info für die com.Beispiel.customcp.
Ich habe erklärt meine Inhalte-Anbieter in der manifest-Datei der ersten app als
<provider android:name="com.example.CustomCP" android:authorities="com.example.customcp"/>
Ich versuche zu nennen, die Anbieter in der zweiten Anwendung start-up-Aktivität
public class app2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Uri kUri = Uri.parse("content://com.example.customcp/key");
Cursor c = managedQuery(kUri, null, null, null, null);
}
}
Also die Frage ist einfach , ist es möglich, den Zugriff auf einen benutzerdefinierten content-Anbieter, die von mehreren Anwendungen?
ContentResolver
Zugriff auf die ContentProvider
von einer anderen Anwendung. Sie benötigen ContentResolver
statt der managedQuery
Ich habe versucht, Uri kUri = Uri.parse("content://com.Beispiel.customcp/key"); ContentProviderClient cr = getContentResolver().acquireContentProviderClient(kUri); try { Cursor c = cr.Abfrage(kUri, null, null, null, null); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } , aber noch immer die gleichen Fehler auf logcat "nicht-Anbieter"
Auch in der ersten Anwendung, wo Sie schreiben die
ContentProvider
Sie brauchen, um zu erklären, dass in der manifest-Datei ofthat Anwendung. hast du das gemacht?Ja, wenn du meinst, dieser Teil: '<provider android:name="com.Beispiel.CustomCP" android:authorities="com.Beispiel.customcp" android:grantUriPermissions="true"/>',, es ist auf der ersten manifest.
InformationsquelleAutor tgAndroid | 2011-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es ist möglich, den Zugriff auf einen benutzerdefinierten content-Anbieter von einer anderen app aus. Mit Ihrer Terminologie nennen wir die content-Anbieter CustomCP und anderen app-AppA. (AppA ist derjenige, der will, Zugang zu der Anbieter). Dieser Ansatz ist bewährt:
Geben Sie das gewünschte content-provider (CustomCP) innerhalb AppA durch die Verwendung eines ContentProviderClient:
Uri yourURI = Uri.parse("content://com.example.customcp/YourDatabase");
ContentProviderClient yourCR = getContentResolver().acquireContentProviderClient(yourURI);
Zugriff auf die Inhalte-Anbieter als man es normalerweise von App A. Zum Beispiel:
yourCursor = yourCR.query(yourURI, null, null, null, null);
Hinweis: Sie müssen entweder schließen Sie den code innerhalb einer try/catch-block oder eine "throws RemoteException" da der Anbieter nicht in der App A.
CustomCP Manifest angeben müssen die Anbieter den Berechtigungen erlaubt (z.B. Lesen und/oder schreiben), und die Anbieter müssen exportiert werden. Hier ist ein Beispiel:
InformationsquelleAutor PeteH
in der manifest-Datei, stellen Sie sicher, dass Ihre
ist in Ihrem
hoffe, das hilft
InformationsquelleAutor Mido
Nach der Erstellung der content-provider , geben Sie den content-provider in der manifest-Datei. Sie erwähnen können content-provider mit dem tag. Innerhalb der provider-tag nicht vergessen zu erwähnen, den Namen und die Behörden Attribute. Diese Erklärung sollte ..
Hier, was Sie erwähnen in der Behörden-Attribut, das sollte passen, wenn Sie versuchen, um die Daten vom provider.
warum android:Multiprozess="true" ist hier erforderlich ?
InformationsquelleAutor java dev