Delphi 10.4.1 在android平台下建立文件無權限


TFileStream.Create(FInstallFileName, fmCreate or fmShareExclusive);

這一句在android下執行,出錯,提示:

Cannot create file "/stroage/emulated/0/Documents/com.kinglandsoft.xxx.apk". Permission denied.

 

10.3.3沒有這個問題的,權限夠的。

百度查到的資料:

Android 10 創建文件一直報錯:Permission denied;

原來 Android 10 改變了文件的存儲方式

可以在Androidmainfest 里面的application添加

android:requestLegacyExternalStorage="true"

 按上面的方法解決了!

我為什么在10.3.3正常呢?是因為10.3.3使用的android sdk版本低,換成10.4.1用的是高版本的sdk,os要檢查的。試着用Delphi 10.4.1建立新項目,查看AndroidManifest.template.xml,發現已經增加了這一行:android:requestLegacyExternalStorage="true"

就是說,我的項目是10.3.3建立的,如果用10.4.1建立項目,則沒有這個問題。

<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="%package%"
        android:versionCode="%versionCode%"
        android:versionName="%versionName%"
        android:installLocation="%installLocation%">

    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
    <%uses-permission%>
    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
    <application android:persistent="%persistent%"
        android:restoreAnyVersion="%restoreAnyVersion%"
        android:label="%label%"
        android:debuggable="%debuggable%"
        android:largeHeap="%largeHeap%"
        android:icon="%icon%"
        android:theme="%theme%"
        android:hardwareAccelerated="%hardwareAccelerated%"
        android:resizeableActivity="false"
        android:requestLegacyExternalStorage="true">
后記:注意10.3.3加這一行無法編譯通過。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM