我有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);
因为它没有给我时间和用户可见的其他元素。
答案 0 :(得分:1)
如何获得此权限?
您必须获得手机/模拟器root权限。没有Root,su命令不适用于您的应用。