Hallo, ich habe folgendes Problem. Auf dem Android 8.0 NVIDIA SHIELD TV habe ich X-plore file Manager und BusyBox installiert. Die Shield ist gerootet. Mein Ziel ist mit einem Programm ein Skript.sh auszuführen. Der Pfad ist:"/data/data/org.xbmc.kodi/flat.shDas Programm führt den Befehl zu einem gewissen Zeitpunkt mit „command:////data/data/org.xbmc.kodi/flat.sh“ aus. Wenn ich im File Manager in dem Pfad das Script direkt ausführe, funktioniert es tadellos. siehe AnhangIm File Explorer gibt es 2 Bereiche:sdcard = /Storage (interner gemeinsamer Speicher)Und/root...Unter Root kann ich der Datei „Skript.sh“ schreib, lese und ausführende Rechte geben.Unter Storage ist es nicht möglich.Zusammenfassend kann ich sagen:1. Führe ich das Skript aus dem "Internen gemeinsamen Speicher" aus, bekomme ich die Meldung: Permission Denied, da ich die Erlaubnisse -lesen, schreiben, ausführen- nicht einstellen kann.2. Führe ich das Skript aus "Root" aus, bekomme ich die Meldung: "no such file or directory!" Hier kann ich die Erlaubnisse - lesen, schreiben, ausführen- zwar setzen, das auszuführende Programm scheint aber den Pfad "/data/data/org.xbmc.kodi/flat.sh" nicht zu finden.
Android Problem mit Berechtigung
-
-
Hallo
Ich habe zwar kein Android TV ist aber auch nicht anders als ein Handy.
Zu deinem Thema ich denke du bringst hier Dateirechte (Dateieigenschaften) und APP Rechte (Permission) durcheinander.
Das was du in deinen File Explorer machst sind die Dateirechte auf Unix, Linux, Betriebssystem Ebene.
Deine von dir beschriebenen Rechte “ schreib, lese und ausführende“ ist Dateisystem eigenschaften, das hat nichts mit App Rechte (Permission) zu tun.
Was du da machst ist das selbe wie der Unix, Linux Befehl „chmod“ . Schaue dir mal an wie das Dateisystem auf einenm Linux Rechner aufgebaut ist und welche rechte es da gibt.Frage zu deinem Path und deinen sogenannten Internen Speicher.
Ist "/data/data/org.xbmc.kodi/“ der Path zu deiner APP ?
Ist der Paket Name der App auch „org.xbmc.kodi“ ?
Wenn das der Packet Name der App ist , ist das auch der App Speicher Bereich wo du keine Permission brauchen solltest.Für alle anderen brauchst du sie. Wie ich sagte Permission keine DateiRechte.
Um zb. auf die SDCarte zu zugreifen brauchst du die „WRITE_EXTERNAL_STORAGE“ Permission die du sicher nicht hast den du bekommst ja die Meldung „Permission Denied“ ist genau das.
Da wohl die Android Version des TV höher als 6 (API 23) ist reicht es nicht mehr aus die Permission nur im Manifest zu setzen. Du musst sie dir auch zu Laufzeit vom User holen.
https://developer.android.com/…permission-sdk-23-element
https://developer.android.com/…ng/permissions/requesting
Das wird dein Haupt Problem sein.
Auch wundert es mich warum du vier Mal den Slash "////" benutz für ich denke eine URI.
Zeige mal wie du das machst das Skript auszuführen. Zu Starten.
Deine URI Müsste meiner Meinung so aussehen.
„command://data/data/org.xbmc.kodi/flat.sh“
Du wirst das wohl so gemacht haben weil du dachstes er findet den Path nicht. Eigentlich hast du die Permission nicht.
Und die URI ist auch falsch deshalb auch bei dem Versuch vom App Speicherbereich "no such file or directory!"
-
Vielen Dank für die ausführliche Erklärung und die Tipps aber irgendwie bin ich mir nicht sicher, ob ich es jetzt richtig verstanden habe...
Die Android Version ist 8
Das mit den vier //// ist mein Fehler gewesen es sind nur drei /// also "command:///data/data/org.xbmc.kodi/flat.sh" das hatte genauso auf einem Odroid C2 mit LibreELEC schon funktioniert. Da war es nur ein anderes Verzeichniss.
Hier die Beschreibung zu der Aktion, welche das Programm ausführt.
https://cinemavision.tv/guides…sion-actions/?tab=reviewsIst "/data/data/org.xbmc.kodi/“ der Path zu deiner APP ?
Ist der Paket Name der App auch „org.xbmc.kodi“ ?
Wenn das der Packet Name der App ist , ist das auch der App Speicher Bereich wo du keine Permission brauchen solltest
Was genau ist denn der Paket Name? Vielleicht liegt hier mein Fehler. Denn wenn ich in dem Ordner keine Permission benötige, wäre doch das einfachste diesen Pfad zu nehmen, oder verstehe ich das jetzt falsch?Ich habe nochmal einen Anhang gemacht, da ist der Speicherort von den sckript.sh files genau zu sehen.
Danke schon mal, ich bin wirklich über jeden Tipp dankbar
-
Nein das in dem App Verzeichnis wird nicht gehen den das Skript hat da normalerweise keinen zugriff drauf, wenn du das stattest. Benutze den Externen Speicher /Storage und um Permission wirst du nicht rum kommen.
Was genau ist denn der Paket Name
Das ist das Packige in deiner App in der MainActivity die erste Zeile
Und das wird bestimmt nicht org.xbmc.kodi sein.
Das Skript ist ja wie ich denke für ein Andere App „xbmc“ und diese App hat auf dein App Verzeichnis keinen Zugriff. Wird mit Sicherheit nicht gehen.
-
Hallo habe mir gerade deinen Link angesehen.
Was schreibst du ? Ich hoffe nicht in Python .
Wenn ja bist du hier etwas falsch. Hier schreiben die meisten native app in Java oder Kotlin . Programmierung auf den Android SDK.
Mit Android Studio.Stimmt für das Studio giebt es auch ein Python plugin und einige android Python libs nur ob die hier viele nutzen, glaube eher nicht.
Das xbmc ist bestimmt auch in Python geschrieben das giebt es ja auch auf einem Enigma2 Box was zum größten Teil Python ist.
Phyton mache ich zwar auch manschmal aber nicht für Android. Da bleibe ich bei Java und kotlin.
Python nutze ich wenn nur für Server Sachen oder auf der Enigma2 Box.Nun leuchtet es mir auch ein warum du nicht mit den App Rechten zurecht kommst. das wird wohl in Python anders gehandhabt weiß ich leider nicht. Eigentlich müsste es die auch das geben denn du schreibst ja für das Android framework und da werden die nun mal benutzt.
Das wirst du dier wol in einen Python android tutorial ansehen müssen.Da bist du bestimmt in einen Python Forum besser aufgehoben.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!