J'ai une apk (App1) qui a une ressource brute (res/raw/mytextfile.txt) et je voudrais lire ce fichier texte d'une autre apk (App2). Je définis un fournisseur de contenu dans App1 et je remplacer la méthode openFile(Uri, String)
comme suit:Partager la ressource brute entre apk
Resources res = getContext().getResources();
return res.openRawResourceFd(R.raw.mytextfile).getParcelFileDescriptor();
App2 effectue les opérations suivantes pour tenter d'obtenir l'accès à MyTextFile.txt:
ContentResolver cr = getApplicationContext().getContentResolver();
ParcelFileDescriptor fd = cr.openFileDescriptor(uri, "r");
InputStream is = new FileInputStream(fd.getFileDescriptor());
BufferedReader bis = new BufferedReader(new InputStreamReader(is));
Cependant, quand je lis et écrire le contenu du BufferedReader, je reçois bien plus que le contenu de mytextfile.txt. Clairement je fais quelque chose de mal donc j'apprécierais que quelqu'un puisse me diriger dans la bonne direction. Merci,
Mirza
je joue avec ce un peu plus et a constaté que le fichier desriptor retourné à App2 est pointant vers le fichier apk App1. J'ai écrit le contenu du BufferedReader dans un fichier et fait une comparaison binaire avec App1.apk. Les deux fichiers étaient identiques.
Fred, aucun projet n'est configuré en tant que projet de bibliothèque Android. Ils sont tous les deux juste des projets d'application réguliers. –
vous pouvez seulement mettre des actifs bruts dans des apks pas bocaux d'où la mention Android Library Project..answer encore debout comme impossible. –
Fred, merci d'avoir pris le temps de répondre. Cependant, je ne suis pas sûr de comprendre la mention des projets de bibliothèque. Les projets en question sont les deux projets d'application. Ce sont des applications autonomes séparées qui contiennent toutes deux des ressources brutes que je peux lire à partir de l'application respective. Ainsi, App1 a res/raw/data1.txt et App2 a res/raw/data2.txt et les deux applications peuvent lire leurs ressources brutes respectives. De plus, dans la configuration initiale, j'obtiens le contenu du fichier que je demande. Le problème est que j'obtiens aussi d'autres ressources et je n'ai aucun moyen de les séparer. –