Delphi/Firemonkey 如何调用 Settings.System.canWrite(上下文) (Android)
Delphi/Firemonkey How to call Settings.System.canWrite(context) (Android)
我正在使用 Delphi 10.3 社区版,并希望在我的应用程序中使用 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 例程并不容易。我已经搜索了几个星期并尝试了 "things on my own",但仍然没有成功。
有人可以提供如何在 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 的更好。 ;-)
这就是我用 "trial and error" 方法发现的:
函数 HasWriteSettings:布尔值;
开始
// 调用 canWrite 检查权限 WRITE_SETTINGS
结果 := TJSettings_System.JavaClass.canWrite(TAndroidHelper.Context.getApplicationContext);</p>
<pre><code>end;
我正在使用 Delphi 10.3 社区版,并希望在我的应用程序中使用 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 例程并不容易。我已经搜索了几个星期并尝试了 "things on my own",但仍然没有成功。
有人可以提供如何在 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 的更好。 ;-)
这就是我用 "trial and error" 方法发现的:
函数 HasWriteSettings:布尔值;
开始
// 调用 canWrite 检查权限 WRITE_SETTINGS
结果 := TJSettings_System.JavaClass.canWrite(TAndroidHelper.Context.getApplicationContext);</p>
<pre><code>end;