Java-Android-在应用程序中创建符号链接
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java-Android-在应用程序中创建符号链接,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1980字,纯文字阅读大概需要3分钟。
内容图文
![Java-Android-在应用程序中创建符号链接](/upload/InfoBanner/zyjiaocheng/694/046e372a9536410fb444bd9d58c6301b.jpg)
我想在我的应用中以编程方式创建符号链接. Android(4.4)是否可能?
在Java中,我们可以使用:
Path newLink = ...;
Path target = ...;
try {
Files.createSymbolicLink(newLink, target);
} catch (IOException x) {
System.err.println(x);
} catch (UnsupportedOperationException x) {
// Some file systems do not support symbolic links.
System.err.println(x);
}
从java.nio.file但我应该在Android中使用什么?
https://docs.oracle.com/javase/tutorial/essential/io/links.html
编辑:
我使用反射/本机代码/OS.symlink()方法进行了测试,但没有任何效果.我总是收到不允许的操作(EPERM).我认为您必须具有root权限才能创建符号链接.
问题可能出在/ mnt / sdcard是包装/ data / media / xxx的FUSE填充程序.所以我开始使用/ data / media / xxx,但是我总是被拒绝
我认为root权限存在问题.
解决方法:
这是一个对我有用的解决方案,如果成功则返回true:
public static boolean createSymLink(String symLinkFilePath, String originalFilePath) {
try {
if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
Os.symlink(originalFilePath, symLinkFilePath);
return true;
}
final Class<?> libcore = Class.forName("libcore.io.Libcore");
final java.lang.reflect.Field fOs = libcore.getDeclaredField("os");
fOs.setAccessible(true);
final Object os = fOs.get(null);
final java.lang.reflect.Method method = os.getClass().getMethod("symlink", String.class, String.class);
method.invoke(os, originalFilePath, symLinkFilePath);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
或在科特林:
companion object {
@JvmStatic
fun createSymLink(symLinkFilePath: String, originalFilePath: String): Boolean {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Os.symlink(originalFilePath, symLinkFilePath)
return true
}
val libcore = Class.forName("libcore.io.Libcore")
val fOs = libcore.getDeclaredField("os")
fOs.isAccessible = true
val os = fOs.get(null)
val method = os.javaClass.getMethod("symlink", String::class.java, String::class.java)
method.invoke(os, originalFilePath, symLinkFilePath)
return true
} catch (e: Exception) {
e.printStackTrace()
}
return false
}
}
内容总结
以上是互联网集市为您收集整理的Java-Android-在应用程序中创建符号链接全部内容,希望文章能够帮你解决Java-Android-在应用程序中创建符号链接所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。