从AdobeAIR android应用程序读取/proc/meminfo
因此,如果我打开一个命令提示符,浏览一下我的设备的/proc/meminfo,如下所示:从AdobeAIR android应用程序读取/proc/meminfo,android,actionscript-3,air,adb,Android,Actionscript 3,Air,Adb,因此,如果我打开一个命令提示符,浏览一下我的设备的/proc/meminfo,如下所示: adb shell cat /proc/meminfo 我得到了你所期望的——一个关于设备RAM使用率+容量的很长的数据列表。但当我尝试从AdobeAIR android应用程序读取相同位置时,使用以下基本代码: var meminfo:File = new File().resolvePath('/proc/meminfo'); meminfo.addEventListener(Event.COMPLE
adb shell cat /proc/meminfo
我得到了你所期望的——一个关于设备RAM使用率+容量的很长的数据列表。但当我尝试从AdobeAIR android应用程序读取相同位置时,使用以下基本代码:
var meminfo:File = new File().resolvePath('/proc/meminfo');
meminfo.addEventListener(Event.COMPLETE, function(e:Event):void {
trace(File(e.target).data);
});
meminfo.load();
。。。我什么也得不到,只有一个空的茶馆
那么,为什么我可以从adb shell中看到/proc/meminfo的内容,而不能从应用程序中看到?例如,/proc/目录-cpuinfo中的其他内容也是如此。不过,我可以从/etc/目录加载xml文件。结果表明,如果您将memtest(或cputest等)复制到另一个位置,即对AIR更友好的位置,比如file.documents目录,那么一切都会顺利进行 您的代码可能看起来有点像这样:
var meminfo_original:File = new File().resolvePath('/proc/meminfo');
var meminfo_copy:File = File.documentsDirectory.resolvePath('meminfo.txt');
meminfo_original.copyTo(meminfo_copy, true);
meminfo_copy.addEventListener(Event.COMPLETE, function(e:Event):void {
trace(File(e.target).data.toString());
});
meminfo_copy.load();
/proc
文件夹是IIRC paravirtual,也就是说,它作为内存位置或接口存在于Linux内核中,因此它不是一个普通的文件
,无法通过将其作为文件加载来读取。此外,还有一些安全措施不允许应用程序读取系统配置,以防止病毒或其他恶意代码欺骗关键信息。Adobe Flash Player有一个已知的限制,即不允许AS3代码在Windows上访问系统配置,这里可能也适用相同的安全限制。因此,这肯定是对我问题的正确答案,但我也提出了一个“解决方案,“简单地将文件复制到某个地方就可以了,而且副本似乎没有相同的访问限制。您想添加您的答案并让我将其标记为正确,还是我应该用我的解决方案进行自我回答?我认为您最好使用自我回答,因为这包括您自己的研究和行动。