Android Studio 版本:Chipmunk 2021.2.1
Mac 版本:macOS Monterey 版本 12.4
每当我单击上图中的“打开”以打开我的任何项目时,android studio 就会完全冻结,然后我必须强制使其安静才能重试。
我能够打开最近菜单列表中的所有项目,也能够创建新项目。我尝试从最近的菜单列表中打开其中一个项目,然后尝试使用“文件”->“打开”打开其他项目,但它再次冻结。
有什么解决办法吗?
我需要在我的应用程序中使用后台服务一定时间后删除屏幕截图图像文件,并且使用上述方法工作正常
private void deleteTheFile(String path) {
File fdelete = new File(path);
if (fdelete.exists()) {
if (fdelete.delete()) {
getApplicationContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(path))));
Log.i(TAG, "deleteTheFile: file deleted");
} else {
Log.i(TAG, "deleteTheFile: file not dellleeettteeeddd");
}
}
Run Code Online (Sandbox Code Playgroud)
但正如每个人都知道 android R (11) 带来的变化所以我尝试更新我的应用程序
MANAGE_EXTERNAL_STORAGE 权限
但谷歌拒绝了我的更新说
问题:需要使用 Media Store API
您已请求访问所有文件访问权限,但您的应用程序的核心功能似乎只需要访问媒体文件。借助 MediaStore API,应用程序可以贡献和访问外部存储卷上可用的媒体,而无需访问所有文件权限。
请更新您的应用,以便该功能使用媒体存储 API 并删除所有文件访问 (MANAGE_EXTERNAL_STORAGE) 权限。
但我以前从未使用过媒体存储API,我不知道它是否可以用它删除图像文件,因为删除文件属于可写部分
首先看下面的代码
class WellnessViewModel : ViewModel() {
private val _tasks = getWellnessTasks().toMutableStateList()
val tasks: List<WellnessTask>
get() = _tasks
Run Code Online (Sandbox Code Playgroud)
现在,我将任务传递给 composeFunction,并且 _tasks 中的任何更改(添加或删除项目)都会导致 composeFunction 重新组合。但是这个东西究竟是如何工作的,因为我向该函数提供了非状态对象,如下代码所示。
@Composable
fun WellnessScreen(
modifier: Modifier = Modifier,
wellnessViewModel: WellnessViewModel = viewModel()
) {
Column(
modifier = modifier
) {
StatefulCounter()
WellnessTasksList(
list = wellnessViewModel.tasks,
onCloseTask = {
wellnessViewModel.remove(it)
},
onCheckedTask = { task, checked ->
wellnessViewModel.changeTaskChecked(task, checked)
}
)
}
}
Run Code Online (Sandbox Code Playgroud)
为什么它有效以及如何工作,对此需要一个简单的解释。
android ×3
ads ×1
android-11 ×1
composable ×1
delete-file ×1
facebook-ads ×1
kotlin ×1
macos ×1
mediastore ×1