当前位置: 首页 > 知识库问答 >
问题:

在尝试读取/etc/hosts文件时,Android系统频繁崩溃?

支阳波
2023-03-14

我正在使用下面的java代码来检查我用户的主机文件,看看他们是否阻止了我应用程序中的广告(因此,我可以弹出一个plead窗口,解释为什么我需要广告钱等等):

public boolean IsAdBlocked()
{
    BufferedReader in = null;

    try
    {
        in = new BufferedReader(new InputStreamReader(new FileInputStream("/etc/hosts")));
        String aLine;
        while ((aLine = in.readLine()) != null) if (aLine.contains("admob")) return true;
    }
    catch (IOException e)
    {
    }
    return false;
}

我用以下函数从C++调用它:

bool JavaBridge_IsAdBlocked()
{

JNIEnv* threadEnv;
g_theJavaVirtualMachine->GetEnv ((void **) &threadEnv, JNI_VERSION_1_4);

jclass aObject = threadEnv->FindClass(ACTIVITY_NAME);
if(aObject==NULL) {return true;}
jmethodID aFunction = threadEnv->GetMethodID(aObject, "IsAdBlocked", "()Z");
if(aFunction==NULL) {return true;}

jboolean aBool=threadEnv->CallBooleanMethod(g_theGlobalRefToActivityInstance,aFunction);
threadEnv->DeleteLocalRef(aObject);

return (aBool!=0);
}

#01 pc 00000000000484b3/system/lib/libc.so(pthread_kill+34)
#02 pc 000000000001dd89/system/lib/libc.so(__libc_android_abort+34)
#03 pc 0000000000019511/system/lib/libc.so(__libc_android_abort+34)
#04 pc 0000000000017150/system/lib/libc.so(abort+4)
#05 pc

有人能解释一下是什么情况导致“ScopedObjectAccessalReadyRunnable”螺旋形地消失到完全毁灭吗?


共有1个答案

狄宏大
2023-03-14

虽然批评您的方法的评论是非常合理的,但最有可能导致崩溃的原因是您的JNI运行在未附加到JVM的本机线程上。

 类似资料:
  • 问题内容: 我目前正在Linux系统上以python编写程序。目的是在发现特定字符串后读取日志文件并执行bash命令。日志文件正在被另一个程序不断写入。 我的问题 :如果使用该方法打开文件,我的Python文件对象将随着其他程序写入实际文件而更新,还是我必须在一定时间间隔内重新打开文件? 更新 :感谢到目前为止的答案。我也许应该提到,该文件是由Java EE应用程序写入的,所以我无法控制何时将数据

  • Java运行时环境检测到一个致命错误: SIGSEGV(0xB)在PC=0x00007FBFFF58A061,PID=4562,TID=140465537804032 JRE版本:Java(TM)SE运行时环境(7.0_51-B13)(build 1.7.0_51-B13)Java VM:Java HotSpot(TM)64位服务器VM(24.51-B03混合模式linux-amd64压缩oops

  • 要在 /etc/hosts 文件里配置网卡的 IP 地址、FQDN 和可能会用的别名,语法如下: <IP address> myhost.example.org aliases 除非您的计算机在 Internet 上是可访问的(例如,有一个注册的域名并分配到了一个合法的 IP 地址(块)(大多数用户没有)),请确保 IP 地址在私有网络 IP 地址范围内,正确的范围是: 类别 网络

  • 设置IP地址与主机名对应表,可用该文件来进行主机名称解释。如: #格式:IP地址 主机名 别名 127.0.0.1 localhost localhost.localdomain 192.168.1.1 debian debian 192.168.0.2 t02 t02.tiger 192.168.0.4 t04 t04.tiger

  • 问题内容: 我正在尝试在Android系统上写入一个简单的文本文件。这是我的代码: 但是,此代码会产生“ java.io.IOException:打开失败:EROFS(只读文件系统)”错误。我尝试将权限添加到清单文件中,如下所示,但未成功: 有人知道问题是什么吗? 问题答案: 由于您尝试将文件写入根目录,因此需要将文件路径传递到文件目录。 例

  • 与 和别名,如 Im可以用inetaddress.getbyname(“bar.com”)解析bar.com。但如果行变得更大,比如30个主机,并且长度超过767个字符,则会抛出一个UnknownHostException。 该如何让Java处理好这条线? 例如,“ping bar.com”可以正确地进行查找。