我正在编写一个应用程序来捕获墓碑日志。
如何在任何 Android 设备中获取墓碑日志的默认位置?即使墓碑日志尚不可用,当发生崩溃或某些事情时,它们会存储在哪里?AFAIK 这些日志保存在“/data/tombstones/”中,但这条路径在所有设备上通用吗?我是否需要从代码中的“adb shell getprop”等动态读取某些属性?
我有一个bash脚本,如下所示
if [ -f "/sdcard/testfile"]
then
echo "exists" > /sdcard/outfile
else
echo "does not exist" > /sdcard/outfile
fi
Run Code Online (Sandbox Code Playgroud)
我有足够的权限来运行它/system/bin/sh.我从我的应用程序调用此脚本并运行它/system/bin/sh.但是在运行后我得到了假,即使文件'/ sdcard/testfile'存在.当我在adb shell中明确运行时,我收到此错误
[: not found
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以完成这项任务?由于应用程序的权限问题,我不能只使用java.io.File; 因此,我坚持使用shell脚本(命令).
我需要应用程序本身的输出.我的意思是,
if(filesAreAvailable)
executeSomething();
else
executeSomethingElse();
Run Code Online (Sandbox Code Playgroud)
基本上我是以编程方式在/data/data/myPackageName/files目录中编写此脚本并调用命令:
if [ -f "/sdcard/testfile"]
Run Code Online (Sandbox Code Playgroud)
如
fileWriterScript.write("if [ -f \"/sdcard/testfile\" ]\n")
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有不同的组件,它们使用FileObservers监视sdcard中的特定文件.因此,有两个文件观察器实例观察单个文件,例如所有事件的abc.xml.
FileObserver fo1 = new FileObserver(new File("/sdcard/abc.xml"));
fo1.startWatching();
FileObserver fo2 = new FileObserver(new File("/sdcard/abc.xml"));
fo2.startWatching();
Run Code Online (Sandbox Code Playgroud)
他们都注册了不同的活动.我的问题是当两个文件观察者并行观察时,我错过了对"fo1"的onEvent()的调用.
这是Android系统的限制吗?有什么方法可以解决这个问题?