Delphi Android requestPermissions - 找不到调用方法

时间:2018-04-15 17:34:42

标签: android delphi mobile permissions usb

我尝试请求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手机上测试显示此错误: “JNIFatal:调用未找到的方法”

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

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

在delphi上 requestPermissions(String [],int)

隐藏第一个(上下文)

这有什么不同吗?我怎么解决?

韩国社交协会

1 个答案:

答案 0 :(得分:0)

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

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