簡體   English   中英

Android Java 中的文件沒有被刪除?

[英]File is not getting deleted in Android Java?

文件在 Android 中沒有被刪除,我已經檢查了所有權限,並且我嘗試了 inte.net 中可用的所有解決方案,但沒有任何幫助。 你的幫助將對我有很大幫助。 提前致謝。

我使用了以下權限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

這是我使用的代碼

File dir = Environment.getExternalStorageDirectory();
String path = dir.getAbsolutePath() + "/Recordings/Call/" + filename;
File fdelete = new File(path);
    if (fdelete.exists()) {
      if (fdelete.delete()) {
        System.out.println("file Deleted :" + path);
      } else {                                              
        System.out.println("file not Deleted :" + path);
      }
 }

錯誤日志是

W/soft.my_app_name: Got a deoptimization request on un-deoptimizable method void libcore.io.Linux.remove(java.lang.String)

在此處輸入圖像描述

錯誤日志是

在此處輸入圖像描述

android 10請加

 android:requestLegacyExternalStorage="true"

在 AndroidManifest.xml 的標簽中

對於 Android 11 或更高版本,此問題與 Android 11 存儲限制有關,如果要刪除/創建外部文件路徑,則需要請求以下權限並管理存儲設備上的所有文件。

 <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

示例代碼:

 public class MainActivity: AppCompatActivity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.activity_main); if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.R) { if (.Environment.IsExternalStorageManager) { Snackbar.Make(FindViewById(Android.Resource.Id,Content), "Permission needed.". Snackbar,LengthIndefinite).SetAction("Settings"; new MyClickHandler(this)).Show(); } } }

然后實現 MyClickHandler(執行 ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION 意圖操作以將用戶定向到系統設置頁面)以授予 Manage_External_Storage 權限。

 internal class MyClickHandler:Java.Lang.Object,View.IOnClickListener { private MainActivity mainActivity; public MyClickHandler() { } public MyClickHandler(MainActivity mainActivity) { this.mainActivity = mainActivity; } public void OnClick(View v) { try { Uri uri = Uri.Parse("package:" + Application.Context.ApplicationInfo.PackageName); Intent intent = new Intent(Android.Provider.Settings.ActionManageAppAllFilesAccessPermission, uri); mainActivity.StartActivity(intent); } catch (Exception ex) { Intent intent = new Intent(); intent.SetAction(Android.Provider.Settings.ActionManageAppAllFilesAccessPermission); mainActivity.StartActivity(intent); } } }

請不要忘記將 MANAGE_EXTERNAL_STORAGE 權限添加到您的 AndroidManifest.xml。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM