MOUNT_UNMOUNT_FILESYSTEMS 权限问题

贪食蛇男 2015-07-03 10:35:55
我在 AndroidManifest.xml 中定义:

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

但在程序中尝试 unmount SD卡时却异常,经检查是无此权限导致,有人知道如何获取此权限吗?

相关代码:


@Override
public void run() {
if (PackageManager.PERMISSION_GRANTED == mContext.checkCallingOrSelfPermission("android.permission.MOUNT_UNMOUNT_FILESYSTEMS")) {
String[] vols = getVolumePaths();
if (vols != null) {
for (String volume : vols) {
if (volume.contains("sdcard")) {
unmount(volume);
}
}
}
} else {
GdLog.i("permission.MOUNT_UNMOUNT_FLESYSTEMS not granted");
}
}


private String[] getVolumePaths() {
StorageManager storageMgr = (StorageManager)mContext.getSystemService(Context.STORAGE_SERVICE);

try {
Method getVolPaths = storageMgr.getClass().getMethod("getVolumePaths");
return (String[])getVolPaths.invoke(storageMgr);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}

return null;
}

private boolean unmount(String volume) {
try {
Method getService = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);
Object service = getService.invoke(null, "mount");

Class<?> Stub = Class.forName("android.os.storage.IMountService$Stub");

Method asInterface = Stub.getMethod("asInterface", Class.forName("android.os.IBinder"));
Object mountServ = asInterface.invoke(null, service);

Method unmountVolume = mountServ.getClass().getMethod("unmountVolume", String.class, boolean.class, boolean.class);
Object result = unmountVolume.invoke(mountServ, volume, true, false);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}

return false;
}

日志里真真的显示 MOUNT_UNMOUNT_FILESYSTEMS not granted
...全文
9062 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaozhung 2015-08-14
  • 打赏
  • 举报
回复
引用 2 楼 dalor 的回复:
此权限已经被禁~
有没有其他权限可以实现同样的作用,或者其他方法呢
chaozhung 2015-08-14
  • 打赏
  • 举报
回复
楼主问题解决类没有,我也遇到这种问题了,求指教
贪食蛇男 2015-07-23
  • 打赏
  • 举报
回复
引用 2 楼 dalor 的回复:
此权限已经被禁~
那么有没有别的途径呢,我看国内外一些MDM产品都有这功能的,并没说明要ROOT什么的。
Arnold9009 2015-07-23
  • 打赏
  • 举报
回复
也许app内部偷偷root了呢
贪食蛇男 2015-07-08
  • 打赏
  • 举报
回复
或者换一种方式,怎么禁用SD卡, 我没在 DevicePolicyManager 中找到相应的方法。
开发者_android 2015-07-08
  • 打赏
  • 举报
回复
此权限已经被禁~

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧