Holen Sie sich Pfad der Android-Ressource

Meine Frage ist: Ist es möglich, den absoluten Pfad einer Ressource (in einem Unterverzeichnis der Res / Ordner) in Android zu bekommen?

Die meisten Antworten, die ich zu dieser Frage auf Google schlage, empfehle, einen Dateideskriptor zu erhalten, was bedeutet, dass dies nicht möglich ist.

  • Holen Sie sich Dateiname und Pfad von URI von mediastore
  • Ist es?

    EDIT: Der Grund, warum ich das machen möchte, ist, weil ich Klassen schreibe, die einen Weg zum Medium annehmen und spielen. Das Testen wäre viel einfacher, wenn ich den absoluten Pfad einer Ressource übergeben könnte.

  • Wo kann man eine XML-Datei mit Daten in einer Android-App platzieren
  • Java: Zugriff auf Ressourcen und das Gesetz von Demeter
  • Wie finde ich View von String statt R.id
  • Was ist der Status von Right To Left Sprachen auf Android?
  • Android - colors.xml Ressource zu int Wert
  • Wie finde ich heraus, welche Ressourcen nicht in einer Android-App verwendet werden
  • 3 Solutions collect form web for “Holen Sie sich Pfad der Android-Ressource”

    Verwenden Sie URI Pfade statt "absoluten" Pfad, siehe diesen Beitrag

    Uri path = Uri.parse("android.resource://com.segf4ult.test/" + R.drawable.icon); Uri otherPath = Uri.parse("android.resource://com.segf4ult.test/drawable/icon"); 

    Oder verwenden Sie openRawResource (R.id), um einen inputStream zu öffnen, und verwenden Sie es genauso wie Sie ein FileInputStream (readonly) verwenden würden,

    Nicht möglich. Der Resource-Ordner, den du siehst, ist in den Apk kompiliert, und es kann nicht einmal so speichern wie es ist. (ZB die Layout-XML-Dateien sind nicht mehr xml-Dateien, sobald es kompiliert ist)

    Zwei mögliche Lösung / Work-around für Ihre Situation:

    1. Schieben Sie die Datei, die Sie benötigen, um einen bekannten Ort (wie / mnt / sdcard / …) mit sdk-Tools
    2. Erstellen Sie einen Mockup-Provider für Ihre Medien-Loader, die Zeug in Roh-Ressource anstatt Pfad akzeptiert, für Ihre Prüfung Zweck

    Im allgemeinen NO . Da es hier mehrmals wiederholt wurde, musst du durch die Ressourcen auf sie zugreifen.

    Das heißt, es gibt Möglichkeiten, wie man das umgehen kann:

    • Kopiere die Dateien von res / assets in den internen Speicher beim ersten Lauf.
    • Verwenden Sie adb, um die Dateien an einen beliebigen öffentlichen Standort zu schieben, z. B. die sdcard (beachten Sie, es ist auch entmutigt, dort absolute Pfade zu verwenden, da nicht jedes Gerät die Laufwerke an denselben Ort montieren kann)
    • /data/data/yourapp/ ein verwurzeltes Telefon und /data/data/yourapp/ auf einen beliebigen Ordner zu, zB /data/data/yourapp/ or /tmp/

    Auf jeden Fall würden Sie gegen eine Lösung testen, die höchstwahrscheinlich nicht in den meisten Geräten funktioniert. Ich schlage vor, dass Sie den Anweisungen des Dev-Führers folgen: http://developer.android.com/guide/topics/data/data-storage.html

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.