如何获得从Xamarin Android执行su命令的权限

时间:2017-03-20 16:10:05

标签: xamarin xamarin.android xamarin.forms android-permissions

我有Xamarin PCL,在Android项目中,我想用类似的代码拍摄屏幕截图:

Java.Lang.Process sh = Java.Lang.Runtime.GetRuntime().Exec("su", null, null);
System.IO.Stream os = sh.OutputStream;
os.Write(Encoding.Unicode.GetBytes("/system/bin/screencap -p /sdcard/img.png"), 0, 0);
os.Flush();
os.Close();
sh.WaitFor();

但是第一行给了我例外: Java.IO.IOException:Permission denied

如何获得此权限?

我不想使用这样的代码获取屏幕截图:

var view = ((Android.App.Activity)MainActivity.Context).Window.DecorView.RootView;
view.DrawingCacheEnabled = true;

Bitmap bitmap = view.GetDrawingCache(true);

byte[] bitmapData;

using (var stream = new MemoryStream())
{
    bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
    bitmapData = stream.ToArray();
}

File.WriteAllBytes(screenshotPath, bitmapData);

因为它没有给我时间和用户可见的其他元素。

1 个答案:

答案 0 :(得分:1)

  

如何获得此权限?

您必须获得手机/模拟器root权限。没有Root,su命令不适用于您的应用。