내가 만든 서비스 클래스에서이 함수를 호출하려고합니다. 이 함수를 작동시키는 데 필요한 컨텍스트와 관련된 몇 가지 문제가 있습니다. 우리가 알고있는 바로는 이라는 서비스 내에서 getBaseContext()
메서드를 사용해야한다는 문맥으로 작업하고 있지만 어떤 이유로이 메서드는 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)
,이 방법은 실제 활동에서 호출 될 때 작동한다. 그러나 서비스에서 아닙니다. 이것의 뒤에 어떤 특정한 추론?
나는 포인터를 고맙게 생각합니다.
contextread 개체에서 전달하는 filereader 메서드에서 this'context.openFileInput (fileName); ' –
을 시도하십시오. 사용하지 않는 이유는 무엇입니까? getBaseContext()를 사용하는 이유는 무엇입니까? – Tacolibre
이전에 컨텍스트를 참조했으나 작동하지 않았습니다. 다른 포스트에서 다른 게시물에 제안한 한 가지 해결책은 getBaseContext()를 사용하는 것이 었습니다. 어느 쪽이든 작동하지 않습니다. –