我正在使用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中调用此例程吗?
非常感谢!MPage
用于检查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;