【问题标题】:Handling intent result of multiple selected files from the storage处理存储中多个选定文件的意图结果
【发布时间】:2020-07-12 04:35:12
【问题描述】:

我对 android Intents 感到头疼。我正在尝试从存储中选择多个图像。我让它一直工作到处理结果的地步。我的猜测是某种 For 循环获取所有文件的路径?我的代码中的结果返回空,我不知道是什么问题。到目前为止我的代码:

//Button to launch activity : 
var
  Intent: JIntent;
begin
  FMessageSubscriptionID :=
    TMessageManager.DefaultManager.SubscribeToMessage
      (TMessageResultNotification, HandleActivityMessage);

  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);
  SharedActivity.startActivityForResult(Intent, 0);
end;

//Handling Result : 
procedure HandleActivityMessage(const Sender: TObject; const M:   TMessage);
function OnActivityResult(RequestCode, ResultCode: Integer; Data: JIntent): Boolean;

...

procedure TForm3.HandleActivityMessage(const Sender: TObject; 
const M: TMessage);
begin
  if M is TMessageResultNotification then
   OnActivityResult(TMessageResultNotification(M).RequestCode, 
     TMessageResultNotification(M).ResultCode,
     TMessageResultNotification(M).Value);
end;

function TForm3.OnActivityResult(RequestCode, ResultCode: Integer;
      Data: JIntent): Boolean;
var
  filename : string;  list : Tstrings;
begin
   Result := False;
   TMessageManager.DefaultManager.Unsubscribe(
      TMessageResultNotification, FMessageSubscriptionID);
   FMessageSubscriptionID := 0;
         
   if RequestCode = ScanRequestCode then
   begin
     if ResultCode = TJActivity.JavaClass.RESULT_OK then
     begin
       if Assigned(Data) then
       begin
         // 
         filename := JStringToString(
                Data.getStringExtra(
                  StringToJString('RESULT'))
              );
         filename := JStringToString(
                Data.getStringExtra(
                  TJIntent.JavaClass.EXTRA_TEXT
                )
                );
        ShowMessage('Result : '+filename);
        memo1.Lines.Add(filename);
      end;

      Toast(Format(
       'Found %s format barcode:'#10'%s', [ScanFormat,
         ScanContent]), LongToast
       );
    end;
  end
  else if ResultCode = TJActivity.JavaClass.RESULT_CANCELED then
  begin
    ShowMessage('No');
  end;
Result := True;

结束; 结束;

使用的 IDE:Delphi 10.3.3 和 Android 9

【问题讨论】:

    标签: android delphi android-intent firemonkey delphi-10.3-rio


    【解决方案1】:

    我找到了解决方案。给你:

    // loop through all images
    JStringToString(Data.getClipData.getItemAt(i).getUri.toString
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 2011-09-03
      • 1970-01-01
      • 2016-08-06
      相关资源
      最近更新 更多