私が作成したサービスクラス内でこの関数フォームを呼び出そうとしています。この関数を動作させるために必要なコンテキストに関するいくつかの問題があります。私が知っているところでは、 というサービスのコンテキストで作業しているのですが、何らかの理由でこのメソッドがnullポインタの例外を与えています。これは私がファイルリーダーメソッドに使用しているコードです。私は例外も含めます。サービス内でのコンテキストの受け渡し
私が試したことのいくつかは、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)
注意点として、この方法は実際の活動から呼び出されたときに動作します。しかし、サービス内からではありません。これの背後にある特定の推論?
私はポインタに感謝します。
コンテキスト・オブジェクトで渡しているfilereaderメソッドのthis.context.openFileInput(fileName); ' –
を試してみてくださいなぜそれを使用していないのですが、なぜgetBaseContext()を使用しますか? – Tacolibre
私は前にコンテキストを参照しましたが、動作しませんでした。他の投稿で提案された解決策の1つはgetBaseContext()を使用することでした。どちらの方法でも動作しません。 –