[英]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.