簡體   English   中英

Delphi/Firemonkey 如何調用 Settings.System.canWrite(context) (Android)

[英]Delphi/Firemonkey How to call Settings.System.canWrite(context) (Android)

我正在使用 Delphi 10.3 Community Edition 並希望在我的應用程序中使用 WRITE_SETTINGS 來設置亮度。 我可以設法實現此過程以調用設置對話框:

 procedure RequestWriteSettings; var Intent: JIntent; begin Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_MANAGE_WRITE_SETTINGS); TAndroidHelper.Activity.startActivity(Intent); end;

我可以在我的應用程序中調用這個過程,出現對話框,我可以設置必要的權限。 但我不想永久調用此過程,因為這對用戶不友好。 我需要檢查是否已經設置了 WRITE_SETTINGS 權限,但我不知道如何在 Delphi/Firemonkey 中實現這一點。

我能找到的是,必須調用“Settings.System.canWrite(context)”函數,但我只能找到 java 的示例。 在 Delphi 中調用這些類型的 Java 例程並不容易。 我已經搜索了幾個星期並嘗試了“我自己的事情”,但仍然沒有成功。

有人可以提供如何在 Delphi 中調用此例程的代碼行嗎?

非常感謝! 頁面

檢查 WRITE_SETTINGS 的示例代碼:

uses
  Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Provider, Androidapi.JNI.Net, Androidapi.Helpers;

procedure TForm1.RequestWriteSettingsButtonClick(Sender: TObject);
begin
  if not TJSettings_System.JavaClass.canWrite(TAndroidHelper.Context) then
    StartWritePermissionsActivity
  else
    ShowMessage('System says app can write settings');
end;

procedure TForm1.StartWritePermissionsActivity;
var
  LIntent: JIntent;
begin
  LIntent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_MANAGE_WRITE_SETTINGS);
  LIntent.setData(TJnet_Uri.JavaClass.parse(StringToJString('package:').concat(TAndroidHelper.Context.getPackageName)));
  TAndroidHelper.Context.startActivity(LIntent);
end;

與此同時,我為自己找到了解決方案,但我認為 Dave 的更好。 ;-)

這就是我用“試錯”方法發現的:

function HasWriteSettings: Boolean; begin // Call canWrite to check for permission WRITE_SETTINGS Result := TJSettings_System.JavaClass.canWrite(TAndroidHelper.Context.getApplicationContext);

 end;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM