Delphi Android requestPermissions - 未找到调用方法

Delphi Android requestPermissions - invoke method not found

我尝试请求 LOCATION_HARDWARE 读取 USB 的权限。

在 delphi 我试试这个代码:

    procedure getPermiss;
    var
        LPermissions: TJavaObjectArray<JString>;
    begin
      LPermissions := TJavaObjectArray<JString>.Create(1);
      LPermissions.Items[0] := StringToJString('android.permission.LOCATION_HARDWARE');
      try
        TAndroidHelper.Activity.requestPermissions( LPermissions, 1);
      except
         on E : Exception do
         begin
           ShowMessage('Exception class name = '+E.ClassName+' ' +E.Message);
         end;
      end;
end;

但在 Android Phone 中的测试显示此错误: "JNIFatal: Invoke Method Not Found"

我看到Activity的requestPermissions方法需要3个参数,而delphi只需要2个。

AndroidStudio 上的方法签名是 requestPermssions(上下文, 字符串[], int)

和 delphi 是 requestPermissions(字符串[], int)

隐藏第一个(上下文)

这个差异是问题所在吗?我该如何解决?

感谢

这是因为 requestPermissions( ); 是在版本 24.1.0 的支持库 (https://developer.android.com/reference/android/support/v4/app/ActivityCompat.html) 中引入的

Delphi 默认使用旧版本的支持库,因此没有 requestPermissions( ); 实现。但是,您可以用新的替换 delphi 使用的默认支持库,您可以在 https://github.com/Zeus64/alcinoe

查看示例