2017-02-22 45 views
0

fromFile - 文件sudo的權限 toFile - 文件中的應用程序文件夾(應用程序可以從這個目錄中讀取)異常讀「CP」和「文件模式」後的文件

複製文件,另外我設置的規則666

Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "cp", fromFile.AbsolutePath , toFile.AbsolutePath }); 
Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "chmod", "666", toFile.AbsolutePath }); 
using (FileInputStream fr = new FileInputStream(toFile)) 
{ 
    ... 
} 

我得到FileInputStream異常:

/dir1/dir2/file.blablabla:開放失敗:EACCES(權限被拒絕)

PS:在完成這些步驟後,我正在尋找filemanager文件toFile的權限。他們是666

PS2:如果這些措施都與文件從公共目錄中,沒有任何錯誤進行!

PS3:設備根

PS4:我的清單

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="byInterv.SilenceClient" android:versionCode="1" android:versionName="1.5" android:installLocation="internalOnly"> 
    <uses-sdk android:minSdkVersion="19" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.WRITE_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> 
    <application android:label="Android Silence" android:hardwareAccelerated="true" android:icon="@drawable/Icon"></application> 
    <receiver android:name=".GCMBootReceiver" android:enabled="true" android:exported="false"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
     </intent-filter> 
    </receiver> 
</manifest> 

PS5: 如果我看文件permissin從蘇則666,如果從應用程序(看Java.IO.File.Can ** *()),則全是假的...:((

回答

0

你給存儲存取權限清單中permisions,否則給這個

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

如果您在Android米工作你必須設置在朗姆酒一次許可。

+0

已經在我的項目android.permission.READ_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGE –

+0

訪問被授予,否則該文件將不會被複制和權利未安裝。 –

+0

你正在使用哪種android版本? –

0

能夠創建與提取數據的問題文件的文件,目標文件可以被讀取。

unreadFile - 問題文件

fullTempName - 解鎖文件

using (Java.Lang.Process p = Java.Lang.Runtime.GetRuntime().Exec("su")) { 
using (DataOutputStream os = new DataOutputStream(p.OutputStream)) 
{ 
    os.WriteBytes("cat \"" + unreadFile + "\"\n"); 
    os.Flush(); 
    os.Close(); 
    using (DataInputStream ins = new DataInputStream(p.InputStream)) 
    { 
    byte[] buff = new byte[4096]; 
    int count = ins.Read(buff, 0, 4096); 
    using (System.IO.FileStream fs = System.IO.File.OpenWrite(fullTempName)) 
    { 
     while (count > 0) 
     { 
     fs.Write(buff, 0, count); 
     count = ins.Read(buff, 0, 4096); 
     } 
     fs.Close(); 
    } 
    } 
} 

如果有其他的方法,請告知。謝謝