gpt4 book ai didi

java - 在服务内部传递上下文

转载 作者:行者123 更新时间:2023-12-01 17:59:14 25 4
gpt4 key购买 nike

我试图在我创建的服务类中调用此函数形式。我在使此功能正常工作所需的上下文方面遇到一些问题。据我所知,如果我们正在处理内部上下文方法 getBaseContext() 应该执行的服务,但由于某种原因,该方法给了我一个空指针异常。这是我用于文件读取器方法的代码。我也会包括异常(exception)情况。

我尝试过的一些事情是将 getBaseContext() 更改为 getApplicationContext() 但我没有得到任何结果。我们如何在服务内部操作上下文?

文件读取器代码:

public String fileReader(Context context, String fileName) throws IOException, JSONException {
FileInputStream fis = getBaseContext().openFileInput(fileName);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader streamReader = new BufferedReader(isr);

StringBuilder responseStrBuilder = new StringBuilder();

String inputString;
while((inputString = streamReader.readLine()) != null) {
responseStrBuilder.append(inputString);
}
streamReader.close();
isr.close();
fis.close();


return responseStrBuilder.toString();


}

异常(exception):

W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.FileInputStream android.content.Context.openFileInput(java.lang.String)' on a null object reference
W/System.err: at com.example.allwaystrack01.internalhtml_chat_demo.services.SystemWebService.fileReader(SystemWebService.java:115)
W/System.err: at com.example.allwaystrack01.internalhtml_chat_demo.services.SystemWebService$WebAppInterface.returnContent(SystemWebService.java:176)
W/System.err: at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
W/System.err: at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:39)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err: at android.os.Looper.loop(Looper.java:154)
W/System.err: at android.os.HandlerThread.run(HandlerThread.java:61)

附带说明一下,此方法在从实际 Activity 调用时有效。但不是来自服务内部。这背后有什么特殊的原因吗?

希望得到指点。

最佳答案

服务是一个上下文,因此您应该能够执行以下操作:

openFileInput(fileName);

没有 getBaseContext 或 getApplicationContext。

如果类扩展了Service。这至少不会在上下文中引发 NPE。

但是您可能是从错误的方法读取文件,例如 onBind 而不是在构造函数中?

此外,请确保您拥有尝试读取的文件的权限,因为在 Android 6.0 上,您需要访问外部文件的权限。

此外,请确保调用该方法时字符串文件名不为空。

关于java - 在服务内部传递上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42282389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com