Android 在';cp';和';chmod';
Android 在';cp';和';chmod';,android,xamarin.android,Android,Xamarin.android,fromFile-sudo权限文件 toFile-应用程序文件夹中的文件(应用程序可以从此目录读取) 复制文件时,我还设置了规则666 Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "cp", fromFile.AbsolutePath , toFile.AbsolutePath }); Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "c
fromFile
-sudo权限文件
toFile
-应用程序文件夹中的文件(应用程序可以从此目录读取)
复制文件时,我还设置了规则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.bla:打开失败:EACCES(权限被拒绝)
PS:完成这些步骤后,我正在filemanager中查找文件toFile
的权限。他们是666
PS2:如果这些操作是使用公共目录中的文件执行的,则没有错误
PS3:设备根目录
我的舱单
<?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:
如果我从su看文件permissin,然后是666,如果从应用程序(Java.IO.file.Can***())看文件permissin,那么全部为false…:((您是否在清单中提供了存储访问权限,否则提供此权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
如果您在安卓m上工作,您必须在rum时间内设置权限。如果能够使用提取的数据问题文件创建文件,则可以读取目标文件
未读文件
-问题文件
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();
}
}
}
如果有其他方法,请告知。谢谢你已经在我的项目中获得android.permission.READ_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGEaccess,否则将不会复制文件,也不会安装权限。你使用的是哪一个android版本?6.0(手机阿尔卡特5045d)如果您在6.中工作,请转到设置->应用->应用名称->权限->存储,并确保其已启用。