有没有办法从Android的fileDescriptor对象获取系统文件描述符(套接字或文件号为int)?我想直接在JNI代码中访问文件描述符,而不使用任何Java包装器.
编辑:
我找到了getParcelfileDescriptorFD,并且fileDescriptor具有名为“ descriptor”的int字段,例如media / jni / androID_media_MediaPlayer.cpp中的用法示例,func定义在frameworks / base / core / jni / androID_util_Binder.cpp中,该字段本身在libcore / luni中/src/main/java/java/io/fileDescriptor.java
但这不是官方记录的API的一部分.有记录的“正确”方法吗?
解决方法:
dalvik / libcore /中的本机代码在java_io_fileDescriptor.c中使用jniGetFDFromfileDescriptor,但是您不应该自己调用它,因为它不是稳定的API.您可以复制&粘贴该代码,但您确实要在进行三思而后行.使用JNI访问实现细节只是在乞求您的代码将来被意外破坏!
更好的选择是:
>如果可以,将I / O保留在Java端.
>如果您必须在本机端执行I / O(如媒体播放器的情况),则将I / O保留在本机端:调用open(2)或该端的任何其他 *** 作,将fd保留为int而不是弄乱fileDescriptor对象,如果将任何内容传递回Java,则传递int或您自己的对象(除了传递回本机代码外,无意将其用于其他任何事情).
这两个选择现在都可以使用,并且不会因您无法控制的AndroID实现细节的更改而被偶然破坏.
总结以上是内存溢出为你收集整理的Android中FileDescriptor的实际系统文件描述符(如int)全部内容,希望文章能够帮你解决Android中FileDescriptor的实际系统文件描述符(如int)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)