Erfassungserlaubnis erteilt komplettes Ereignis

Lesezeit: 5 Minuten

Benutzer-Avatar
Die Kanoniere

Ich erstelle eine App mit Flash CC. Ich brauchte eine Speichererlaubnis. Es stellte sich heraus, dass ich den Benutzer um Erlaubnis zur Verwendung von Speichergeräten bitten musste. Ich kann den Benutzer um Erlaubnis bitten und es funktioniert gut. Ich verwende Beispiele von dieser Website: https://helpx.adobe.com/flash-player/release-note/fp_24_air_24_release_notes.html

Aber mein Problem ist, dass ich nicht das vollständige Ereignis für den Zugriff auf die Speicherberechtigung erfassen konnte. Aus diesem Grund konnte ich keine Codes ausführen, nachdem ich Zugriff auf den Speicher erhalten hatte. Ist es möglich, ein vollständiges Ereignis zu erfassen, um eine Genehmigung zu erteilen?

der Code, den ich verwendet habe:

var file:File = File.documentsDirectory.resolvePath("somefile.txt");
trace("url_txt:" + file.url);
file.addEventListener(PermissionEvent.PERMISSION_STATUS, function permissionStatusHandler(e:PermissionEvent):void
{                        
    file.removeEventListener(PermissionEvent.PERMISSION_STATUS, permissionStatusHandler);
    if(e.status == PermissionStatus.GRANTED)
    {                            
        myTextLoader.load(new URLRequest(file.url));
        myTextLoader.addEventListener(Event.COMPLETE, onLoadTextComp);
        myTextLoader.addEventListener(IOErrorEvent.IO_ERROR, loadingTextError);
    }
    else
    {
        showPermissionError();
    }
}
);
try
{
    trace("Requesting permission");
    file.requestPermission();
}
catch(error:Error)
{
    trace("Request permission error");
}

AKTUALISIEREN:

Der obige Code scheint gut zu funktionieren. Das Problem tritt jedoch auf, wenn ich versucht habe, dieselbe Erlaubnis zweimal zu unterschiedlichen Zeiten anzufordern. Ich habe noch eine Frage. Können wir eine Beschreibung hinzufügen, während wir um Erlaubnis bitten? Viele Apps scheinen eine Beschreibung hinzuzufügen, warum die App diese bestimmte Berechtigung benötigt. Ist es möglich, dies von Flash as3 zu erreichen? Ich habe im Web geschaut aber nichts gefunden. Und wie man die Erlaubnis anfordert READ_PHONE_STATE?

  • danke für die schnelle antwort. Ich werde das überprüfen.

    – Die Kanoniere

    26. Juni 2017 um 9:46 Uhr

  • ist onRequestPermissionsResult für as3 oder android studio?

    – Die Kanoniere

    26. Juni 2017 um 9:47 Uhr

  • Zeigen Sie vielleicht Ihren Code? “Aufnahme war nicht möglich” klingt komisch.

    – Organis

    26. Juni 2017 um 9:53 Uhr

  • Beim Testen bin ich auf ein ganz anderes Problem gestoßen. Während ich keine Probleme mit dem Ereignis selbst habe, rufe ich die an um Erlaubnis bitten bietet mir keine Optionen, sondern feuert sofort die PermissionEvent stattdessen mit der aktuellen Berechtigung. Ich habe es mit AIR 24 SDK für die AIR 24-Laufzeit (Flash Player 35) erstellt und auf Android 6 getestet.

    – Organis

    26. Juni 2017 um 13:13 Uhr

Endlich habe ich es verstanden. Voraussetzungen:

  • AIR-Laufzeit 24+
  • Android 6+
  • APK muss mit WRITE_EXTERNAL_STORAGE-Berechtigung veröffentlicht werden (andernfalls automatisch BESTRITTEN – das, woran ich feststeckte)

Dann funktioniert dieser Code für mich einwandfrei, er zeigt den Dialog “Erlaubnis erteilen” von Android an und gibt dann GRANTED oder DENIED in Bezug auf meine Wahl aus. Das Protokoll class ist nur ein eigenes Debug-Panel, das Sie ändern können Log.log Anrufe zu verfolgen oder schnapp es dir hier (es hat keine Abhängigkeiten): https://bitbucket.org/thydmitry/ru.delimiter/src/9083fb46ce1c/classes/ru/delimiter/utils/

package
{
    import ru.delimiter.utils.Log;

    import flash.filesystem.File;

    import flash.display.StageScaleMode;
    import flash.display.StageAlign;
    import flash.display.Sprite;

    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.events.PermissionEvent;

    import flash.permissions.PermissionStatus;

    public class Permissions extends Sprite
    {
        private var F:File;

        public function Permissions() 
        {
            if (stage) onStage();
            else addEventListener(Event.ADDED_TO_STAGE, onStage);
        }

        private function onStage(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, onStage);

            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            Log.create(this, true);

            Log.log("[Permissions Test] started");
            Log.log("File.permissionStatus:", File.permissionStatus);

            F = File.applicationStorageDirectory.resolvePath("somefile.txt");
            F.addEventListener(PermissionEvent.PERMISSION_STATUS, onPerm);

            stage.addEventListener(MouseEvent.CLICK, onClick);
        }

        private function onClick(e:MouseEvent):void
        {
            F.requestPermission();
        }

        private function onPerm(e:PermissionEvent):void
        {
            Log.log("User's decision:", e.status.toUpperCase());
        }
    }
}

  • wird PERMISSION_STATUS sofort ausgeführt oder wird es erst ausgeführt, nachdem sich der Berechtigungsstatus geändert hat?

    – Die Kanoniere

    27. Juni 2017 um 5:00 Uhr

  • Es stellte sich heraus, dass mein obiger Code so funktionierte, wie er ist. Das Problem ist, dass ich zwei Textdateien lesen muss. Wenn die App die erste nicht finden konnte, versucht sie, die zweite zu lesen. Ich habe den gleichen Code eingefügt, wenn die zweite Textdatei zu lesen versucht. Aber beim zweiten Mal wird ein Fehler auf dem Gerät ausgegeben. Am PC funktioniert es einwandfrei. Warum wird ein Fehler ausgelöst? Ich weiß, ich kann nicht mehrere Berechtigungen gleichzeitig anfordern, aber ich beantrage keine Erlaubnis gleichzeitig. Ich beantrage jedoch zweimal die gleiche Erlaubnis, aber nicht zur gleichen Zeit. Darf ich dieselbe Erlaubnis nicht zweimal beantragen?

    – Die Kanoniere

    27. Juni 2017 um 7:17 Uhr

  • @TheGunners Soweit ich den obigen Code getestet habe, sobald der Benutzer bereitwillig die Erlaubnis erteilt hat, alle Konsequenzen um Erlaubnis bitten feuert nur PermissionEvent mit Status einstellen gewährt sofort. Ich bin dabei auf keine Ausnahmen gestoßen. Sobald der Benutzer die Berechtigung erteilt hat, bleibt sie auch dann erteilt, wenn Sie die App schließen und erneut öffnen, es sei denn, Sie deaktivieren die erteilte Berechtigung in den Anwendungseinstellungen (in diesem Fall kehrt das Verhalten zum ursprünglichen Zustand zurück und erfordert einen Aufruf um Erlaubnis bitten wieder).

    – Organis

    27. Juni 2017 um 8:41 Uhr


  • Ich weiß nicht warum, aber es zeigt einen Fehler an. Aber ich habe den Code weggeworfen. Jetzt bitte ich nur einmal um Erlaubnis. Und noch eine Frage: Ist es möglich, beim Anfordern von Berechtigungen eine Beschreibung hinzuzufügen?

    – Die Kanoniere

    27. Juni 2017 um 9:22 Uhr

  • @TheGunners Beschreibung? Was für eine Beschreibung? Meinst du den Android-Dialog “Berechtigung erteilen”?

    – Organis

    27. Juni 2017 um 11:00 Uhr

1010700cookie-checkErfassungserlaubnis erteilt komplettes Ereignis

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy