/** * 递归遍历 file目录下 name文件 * @param file * @param name * @return */ public String getWeiXinFilePath(File file,String name){ if(!file.canRead()){ upgradeRootPermission(file.getPath()); } if (file.exists()&&file.isDirectory()) { File[] fileList = file.listFiles(); for (int i = 0; i < fileList.length; i++) { File fileDir = fileList[i]; if (fileDir.isDirectory()) { String str = getWeiXinFilePath(fileDir, name); if (str!=null){ return str ; } } else if (fileDir.isFile()) { if (EnableLOG) { Log.i("log", "file_name=" + fileDir.getName()); Log.i("log", "file_dir=" + fileDir.getAbsolutePath()); } if (fileDir.getName().equals(name)) { if (EnableLOG) { Log.i("log", "find_File=" + fileDir.getAbsolutePath()); } return fileDir.getAbsolutePath(); } } } } return null; }
/** * 获取Root权限 * @param pkgCodePath * @return */ public boolean upgradeRootPermission(String pkgCodePath) { Process process = null; DataOutputStream os = null; try { String cmd="chmod 777 " + pkgCodePath; process = Runtime.getRuntime().exec("su"); //切换到root帐号 os = new DataOutputStream(process.getOutputStream()); os.writeBytes(cmd + "\n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); } catch (Exception e) { Toast.makeText(MainActivity.this, "没有ROOT权限无法读取", Toast.LENGTH_SHORT).show(); return false; } finally { try { if (os != null) { os.close(); } process.destroy(); } catch (Exception e) { } } return true; }