修改targetSDKversion 26的AndroidManifest.template.xml可防止对图片库的写访问

时间:2018-06-13 15:28:22

标签: android delphi

这是与此问题相关的伴随问题:
Delphi - New apps on Google Play must target Android 8 (API level 26) - PUSH notification in background

我正在尝试将位图保存到Android的图片文件夹下的“clientName”子文件夹中。

如果我使用原始的AndroidManifest.template.xml文件,一切都按预期工作。如果我使用以'targetSdkVersion =“26”'修补的AndroidManifest.template.xml文件来满足谷歌接受应用程序商店的最后期限,则相同的代码将失败(在“.SaveToFile”上引发异常)。

有什么方法可以解决这个问题,而Embarcadero会在内部解决这个问题吗?

这是代码:

BaseFolder := System.IOUtils.TPath.GetSharedPicturesPath;
If DirectoryExists(BaseFolder) = True then
Begin
  SaveFolder := BaseFolder+System.IOUtils.TPath.DirectorySeparatorChar+clientName;
  If DirectoryExists(SaveFolder) = False then ForceDirectories(SaveFolder);

  SaveFile := SaveFolder+System.IOUtils.TPath.DirectorySeparatorChar+clientName+'_'+ReplaceStr(ReplaceStr(DateTimeToStr(Now),':','.'),'/','.')+saveImageFileExt;
  Try
    bmpCropped.SaveToFile(SaveFile);
  Except
    displayMessage := strErrorSavingPicture;
  End;
  If FileExists(SaveFile) = True then displayMessage := strPictureSaved;
End
Else displayMessage := strPictureFolderNotFound;

1 个答案:

答案 0 :(得分:0)

引入支持运行时权限的Delphi 10.3解决了该问题。