[英]Android/Java, Settings.System.canWrite(context) error
[英]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.