Delphi Android requestPermissions - 找不到调用方法



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

在德尔福,我尝试以下代码:

    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;

但在安卓手机中的测试中显示此错误:"JNIFatal:未找到调用方法">

我看到活动的requestPermissions方法需要3个参数,而在delphi中只需要2个参数。

AndroidStudio 上的方法签名是requestPermssions(Context, String[], int(

在德尔福是requestPermissions(String[], int(

隐藏了第一个(上下文(

这种差异是问题吗?我该如何解决?

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

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

最新更新