关于/dev/graphics/fb0拒绝访问的解决方案
来源:互联网 发布:鹏博士数据 编辑:程序博客网 时间:2024/06/08 03:22
关于/dev/graphics/fb0拒绝访问的解决方案
访问该路径时若出现以下log:
W/System.err﹕ Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
08-29 11:26:01.759 1188-1314/com.markslin.viewtest W/System.err﹕ at libcore.io.Posix.open(Native Method)
08-29 11:26:01.759 1188-1314/com.markslin.viewtest W/System.err﹕ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
08-29 11:26:01.763 1188-1314/com.markslin.viewtest W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:400)
解决方案一:
通过cmd进入控制台,输入以下命令即可:adb shell chmod 777 /dev/graphics/fb0
解决方案二:
由于安装到手机上用户不可能去输入命令,因此可采用以下方案,编写代码执行Linux命令
public void execLinuxCmd(String cmd){ Process process=null; DataOutputStream os=null; try{ process=Runtime.getRuntime().exec("su"); os=new DataOutputStream(process.getOutputStream()); os.writeBytes(cmd+"\n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); } catch (Exception e) { e.printStackTrace(); }finally { if (os!=null){ try { os.close(); process.destroy(); } catch (IOException e) { e.printStackTrace(); } } } }
以下是MainActivity仅供参考
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); execLinuxCmd("chmod 777 /dev/graphics/fb0"); } public void execLinuxCmd(String cmd) { Process process = null; DataOutputStream os = null; try { process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(process.getOutputStream()); os.writeBytes(cmd + "\n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); } catch (Exception e) { e.printStackTrace(); } finally { if (os != null) { try { os.close(); process.destroy(); } catch (IOException e) { e.printStackTrace(); } } } } public void testButtonClicked(View view) { new Thread() { @Override public void run() { super.run(); FileInputStream fileInputStream = null; try { fileInputStream = new FileInputStream("/dev/graphics/fb0"); if (fileInputStream == null) Log.i("RUN", "run null"); else Log.i("RUN", "not null"); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (fileInputStream != null) try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }.start(); }}
注:网上说在AndroidManifest.xml要配置什么android:sharedUserId,各种权限什么的。但是亲测如果只是访问该文件的话是不需要加任何东西的,也不需要什么源码命令,什么mm命令。如有出错请见谅。
- 关于/dev/graphics/fb0拒绝访问的解决方案
- open(\"/dev/graphics/fb0\") failed!
- fedora framebuffer fb0 的创建 关于/dev/fb0找不到
- Android读取/dev/graphics/fb0 屏幕截图
- android通过读取/dev/graphics/fb0文件解析出系统界面的图片
- /dev/fb0的入门练习
- /dev/fb0的入门练习
- (OK) kernel create framebuffer device - /dev/graphics/fb0
- 解决/dev/fb0无法打开的问题
- 关于进程的拒绝访问
- Android平台截图研究 FrameBuffer(/dev/graphics/fb0) 文件内容研究!(含源码工程)
- Android 截屏(只需要引用jar包,需要root),利用/dev/graphics/fb0命令行实现
- /dev/fb0入门练习
- /dev/fb0入门练习
- 关于Vs2012重新生成解决方案时提示exe访问被拒绝的处理方式
- [转]解决/dev/fb0无法打开的问题
- 添加/dev/fb0设备及修改framebuffer的显示模式
- 关于文件夹拒绝访问的问题
- UVa 1303 - Wall(凸包)
- 一条忍着不死的鱼
- Ubuntu14搭建ML开发环境
- 欢迎使用CSDN-markdown编辑器
- 黑马程序员——C语言中的运算符
- 关于/dev/graphics/fb0拒绝访问的解决方案
- Linux____网络编程基础
- [刷题]N-Queens II
- 《IOS_C语言》指针
- 简单魔板[Special judge]
- Java中的装箱与拆箱
- HDU-2544 最短路
- super.getClass()
- C++的运算符重载 --http://blog.csdn.net/zgl_dm/article/details/1767201