我想在我創建的服務類中調用此函數形式。我在獲取此功能所需的上下文時遇到了一些問題。據我所知,如果我們正在使用方法getBaseContext()
應該執行的服務 中的上下文,但由於某種原因,此方法給了我一個空指針異常。這是我用於文件讀取器方法的代碼。我也會包括這個例外。傳遞服務內部的上下文
我試過的一些東西是關於將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();
}
例外:
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)
作爲一個側面說明,這種方法可行時,從實際活動被調用。但不是在服務範圍內。這背後的任何特殊推理?
我將不勝感激指針。
試試這個'context.openFileInput(fileName);' –
在您傳遞給上下文對象的filereader方法中,爲什麼不使用它,爲什麼要使用getBaseContext()? – Tacolibre
我引用上下文之前,但它不工作,其他人建議在另一篇文章中的一個解決方案是使用getBaseContext(),所以我嘗試使用它。它在任何一個方面都不起作用。 –