Einzelnen Beitrag anzeigen

stalkingwolf

Registriert seit: 6. Mai 2011
401 Beiträge
 
#1

FMX : getContentResolver.query Crash und Jnet_Uri getPath

  Alt 22. Jul 2020, 16:32
Ich versuche gerade ein ÖffnenDialog für Bilder in meine APP einzubauen.
Dabei bin ich auf 2 Probleme gestoßen.

1.
Wenn ich das ActivityResult zurück bekomme und mir den JCursor mit SharedActivity.getContentResolver.query holen möchte, dann stürzt das APP ab, wenn ich im Bilderdialog mehr als ein Bild ausgewählt habe.

Den Bilderdialog starte ich mit folgendem Quellcode
Code:
            FMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage (TMessageResultNotification, HandleActivityMessage);

            RequestCode := 0;
            Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_PICK);
            intent.setType(StringToJString('image/*'));
            intent.setAction(TjIntent.JavaClass.ACTION_GET_CONTENT);
            Intent.putExtra(TJIntent.JavaClass.EXTRA_ALLOW_MULTIPLE,true);

            ResolveInfo := SharedActivity.getPackageManager.resolveActivity(Intent, 0);
            if ResolveInfo <> nil then SharedActivity.startActivityForResult(Intent, RequestCode);
Funktioniert auch soweit, wenn ich nur 1 Datei auswähle. Aber es war ganz praktikabel wenn der Anwender mehr als eine Datei auswählen könnte.

Code:
var
C      : JCursor;
cols   : TJavaObjectArray<JString>;
begin

  if Assigned(Data) then begin

    cols:= TJavaObjectArray<JString>.Create(1);
    cols[0] := StringToJString('_display_name');
    c:= SharedActivity.getContentResolver.query(
        data.getData,
        cols,
        nil,   //StringtoJString(''),
        nil,
        nil    //StringtoJString('')
);
Da ist noch mehr Quellcode, aber der ist irrelevant.

2.
Wenn ich mir mit Data.getData.getPath den Pfad ausgeben lasse steht dort /document/image:1456
Den Pfad gibt es nicht. Wie bekomme ich hier den korrekten Pfad?

Ich glaube ich hab hier einen falschen Denkansatz oder? Ich bekomme gar nicht den Pfad raus? Sicherheit?
Weil die Document ID ist image:1456. D.h das System verhindert das ich ermitteln kann wo die Datei liegt?

Geändert von stalkingwolf (22. Jul 2020 um 16:44 Uhr)
  Mit Zitat antworten Zitat