gpt4 book ai didi

android - 在 Android 中格式化 SD 卡

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:07:21 24 4
gpt4 key购买 nike

事情应该很简单,但在大多数情况下,在 Android 中却并非如此。如果用户在我的应用程序中选择该选项,我需要格式化 SD 卡。如果它已经在操作系统中,请不要问我为什么需要这样做……不切实际,但这是我需要实现的要求。您可能知道,设置\存储\删除 SD 卡中有一个选项。我看了一下 froyo 的源代码,它是这样的:

final IMountService service =
IMountService.Stub.asInterface(ServiceManager.getService("mount"));
if (service != null) {
new Thread() {
public void run() {
try {
service.formatVolume(Environment.getExternalStorageDirectory().toString());
} catch (Exception e) {
// Intentionally blank - there's nothing we can do here
Log.w("MediaFormat", "Unable to invoke IMountService.formatMedia()");
}
}
}.start();
} else {
Log.w("MediaFormat", "Unable to locate IMountService");
}

它使用 android.os.storage.IMountServiceandroid.os.ServiceManager 但我似乎无法访问它。因此,正如我所见,我可以递归搜索每个文件并将其删除,但这“不符合我的口味”……或者我可以从删除 SD 卡到用户启动屏幕。

任何帮助都非常受欢迎,因为我被困住了。

最佳答案

首先,我认为您可能需要在格式化 SD 卡之前卸载 .android_secure 文件系统,无论您采用何种方法。

然后,

尝试在您的应用中包含以下权限:

1) MOUNT_FORMAT_FILESYSTEMS - http://developer.android.com/reference/android/Manifest.permission.html#MOUNT_FORMAT_FILESYSTEMS

2) MOUNT_UNMOUNT_FILESYSTEMS - http://developer.android.com/reference/android/Manifest.permission.html#MOUNT_UNMOUNT_FILESYSTEMS

Android 设置应用已经使用第二个权限。

============================================= =================================

当您执行 AOSP 或任何其他分发代码的构建时,IMountService.java 文件会自动生成。它包含以下函数,我猜它实际上将格式化命令发送到 vold 守护进程。:

private static class Proxy implements android.os.storage.IMountService
{
private android.os.IBinder mRemote;
Proxy(android.os.IBinder remote)
{
mRemote = remote;
}

public android.os.IBinder asBinder()
{
return mRemote;
}

// **** A LOT OF OTHER CODE IS HERE.....

public int formatVolume(java.lang.String mountPoint) throws android.os.RemoteException
{
android.os.Parcel _data = android.os.Parcel.obtain();
android.os.Parcel _reply = android.os.Parcel.obtain();
int _result;
try {
_data.writeInterfaceToken(DESCRIPTOR);
_data.writeString(mountPoint);
mRemote.transact(Stub.TRANSACTION_formatVolume, _data, _reply, 0);
_reply.readException();
_result = _reply.readInt();
}
finally {
_reply.recycle();
_data.recycle();
}
return _result;
}
}

关于android - 在 Android 中格式化 SD 卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com