android目錄訪問
❶ 文件管理顯示訪問受限
文件管理顯示訪問受限是Android 11的一個特性,為了隱私和安全限制了對Android目錄的訪問。建議用Documents UI去訪問這里的文件。你要說非常信任這個軟體並且非用這個軟體不可的話那就去找這個文件管理軟體的開發商,找他要標准啊Documents UI授權功能。只要你在Documents UI授權訪問了這個軟體就可以讀取。
安卓11制定了新的文件存儲與讀取規范,文件管理中的android/adta、android/obb文件夾無法通過文件管理直接訪問。
回顧Android 10,其中的一大亮點就是改進了對應用程序許可權「僅這一次」的處理。Android 10給了用戶更多的應用程序控制權以及他們可以訪問的內容,Android 11則提出一個更加出色的新功能。
Android 11 新增了關於位置、麥克風和攝像頭的一次性許可權許可。也就是說,獲得一次性許可權許可的 APP 在下次使用時,依然要詢問用戶獲取授權。下次再使用該應用程序並希望使用該許可權時,還會再重新授予它訪問許可權。
解決方法:請您進入系統設置-安全和隱私-隱私保護-關閉訪問限制,關閉訪問限制需要機主設置的手機密碼。
❷ android系統怎麼設置內部存儲的訪問許可權
Android支持外部存儲(case-insensitive filesystem with immutable POSIX permission classes and modes)。
外部存儲可以通過物理介質提供(如SD卡),也可以通過將內部存儲中的一部分封裝而成,設備可以有多個外部存儲實例。訪問外部存儲的許可權
從Android 1.0開始,寫操作受許可權WRITE_EXTERNAL_STORAGE保護。
從Android 4.1開始,讀操作受許可權READ_EXTERNAL_STORAGE保護。
從Android 4.4開始,應用可以管理在它外部存儲上的特定包名目錄,而不用獲取WRITE_EXTERNAL_STORAGE許可權。
比如,一個包名為com.example.foo的應用,可以自由訪問外存上的Android/data/com.example.foo/目錄。外部存儲對數據提供的保護較少,所以系統不應該存儲敏感數據在外部存儲上。
特別地,配置和log文件應該存儲在內部存儲中,這樣它們可以被有效地保護。對於多用戶的情況,一般每個用戶都會有自己獨立的外部存儲,應用僅對當前用戶的外部存儲有訪問許可權。Environment API的目錄
getDataDirectory():用戶數據目錄。
getDownloadCacheDirectory():下載緩存內容目錄。getExternalStorageDirectory():主要的外部存儲目錄。
但是這個目錄很可能當前不能訪問,比如這個目錄被用戶的PC掛載,或者從設備中移除,或者其他問題發生,你可以通過getExternalStorageState()來獲取當前狀態。
還有多用戶或者多外部存儲的情況,此文不再討論。為了不污染用戶的根命名空間,一般不會直接使用這個外部存儲的根目錄。
任何應用私有的文件的應該被放置在 Context.getExternalFilesDir返回的目錄下,在應用被卸載的時候,系統會清理的就是這個目錄。
另一些共享文件應該被放置在 (String)返回的目錄中。
寫這個路徑需要 WRITE_EXTERNAL_STORAGE許可權,讀需要 READ_EXTERNAL_STORAGE許可權,當然寫許可權默認包含了讀許可權。從KITKAT 即Android 4.4開始,如果你的應用只是需要存儲一些內部數據,可以考慮使用 :
getExternalFilesDir(String)或者getExternalCacheDir(),它們不需要獲取許可權。(String type)這個方法接收一個參數,表明目錄所放的文件的類型,傳入的參數是Environment類中的DIRECTORY_XXX靜態變數,比如DIRECTORY_DCIM等。
注意:傳入的類型參數不能是null,返回的目錄路徑有可能不存在,所以必須在使用之前確認一下,比如使用File.mkdirs創建該路徑。getRootDirectory()得到Android的根目錄。
isExternalStorageEmulated()設備的外存是否是用內存模擬的,是則返回true。(API Level 11)
isExternalStorageRemovable()設備的外存是否是可以拆卸的,比如SD卡,是則返回true。(API Level 9)Context API中的目錄
getExternalFilesDir(String type)是應用在外部存儲上的目錄。
和Environment類的(String type)方法類似,返回包含參數指定的特定類型文件的子目錄。
getExternalCacheDir()是應用的在外部存儲上的緩存目錄。從Android 4.4這兩個方法不需要讀寫許可權,是針對於本應用來說,如果要訪問其他應用的相關目錄,還是需要聲明讀寫許可權。
Android 4.4之前的版本要訪問的話還是要聲明讀寫許可權的,如果沒有在manifest中寫許可權,上面兩個get方法都會返回null。與上面兩個方法形成對比的是下面兩個方法:
getFilesDir()
getCacheDir()
這兩個方法得到的是內存上的目錄。這些目錄都是屬於應用的,當應用被卸載的時候,裡面的內容都會被移除,但是不要依賴於系統的操作。
❸ android 一個apk如何訪問另外的apk的data目錄的
一般APK是無法訪問其它APK的data目錄,你的APK需要在源碼下編譯,獲得系統許可權後才能訪問。對應Android.mk 中添加 LOCAL_CERTIFICATE := platform。
❹ oppo手機data訪問限制如何解決
數據訪問限制?事實上,大多數文件管理器都支持訪問,例如X-plore和MT manager。
至於完全提升,這應該是不可能的
您可以嘗試卸載和更新文件管理。如果可以卸載,則可以讀取和寫入數據文件夾。如果你不卸載更新,那就沒有辦法了。Android 11的一些特性限制了對Android目錄的訪問,以保護隱私和安全。建議使用文檔UI訪問此處的文檔。如果您非常信任此軟體並且必須使用它,請向此文檔管理軟體的開發人員咨詢標准文檔UI授權功能。只要您在文檔UI中授權訪問軟體,您就可以閱讀它。
❺ 安卓11怎麼解除文件訪問限制
可以關閉相應的訪問許可權功能即可,具體的步驟如下所示:
1、首先,解鎖華為手機手機進入後,在手機中選擇設置的圖標進入。如下圖所示:
❻ 如何訪問設備上Android app的目錄
調試的時候,如果想查看自己app的files目錄或者cache目錄,可在adb shell命令行下這樣操作:
$ run-as com.example.store
這樣,就可作為該app的用戶,訪問app下目錄和文件了。只要運行了這個命令,自動切換到該app的根目錄下。
那麼,是不是可以訪問其他人的app呢?
如果要做到這點,首先要獲取其他app的包名,這不是問題,運行如下代碼:
PackageManager pm = getPackageManager();
for (ApplicationInfo app : pm.getInstalledApplications(0)) {
Log.d("storedemo", "package: " + app.packageName + ", " +
"sourceDir: " + app.sourceDir);
}
列印出需要的結果:
image
用豆瓣試試:
$ run-as com.douban.radio
run-as: Package 『com.douban.radio』 is not debuggable
❼ 安卓11如何訪問data
摘要 您好,很高興為您解答。
❽ 如何訪問android的asset目錄和res目錄下的文件
//從resources中的raw 文件夾中獲取文件並讀取數據
public String getFromRaw(){
String result = "";
try {
InputStream in = getResources().openRawResource(R.raw.test1);
//獲取文件的位元組數
int lenght = in.available();
//創建byte數組
byte[] buffer = new byte[lenght];
//將文件中的數據讀到byte數組中
in.read(buffer);
result = EncodingUtils.getString(buffer, ENCODING);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
//從assets 文件夾中獲取文件並讀取數據
public String getFromAssets(String fileName){
String result = "";
try {
InputStream in = getResources().getAssets().open(fileName);
//獲取文件的位元組數
int lenght = in.available();
//創建byte數組
byte[] buffer = new byte[lenght];
//將文件中的數據讀到byte數組中
in.read(buffer);
result = EncodingUtils.getString(buffer, ENCODING);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
來的,大概就是找到文件路徑轉成流,然後再讀取出來轉成字元串!