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?