如何从非动态接收器调用 MainActivity 中带有参数的函数?
How do I call a function with parameters in MainActivity from non-dynamic receiver?
在我的 MainActivity 中,我有以下功能:
public void writefile (FileOutputStream fOut, String fileName, OutputStreamWriter osw, String message){
try {
fOut = openFileOutput(fileName, MODE_WORLD_READABLE);
osw = new OutputStreamWriter(fOut);
osw.write(message);
osw.flush();
osw.close();
}
catch (IOException ioe){
ioe.printStackTrace();
}
}
此应用的短信接收器必须是非动态的(无布局),并且在我的 onReceive 方法中,我尝试调用函数:
writefile(fOut, ib1, osw, message);
我的参数都没问题,但是'writefile'变成了红色'cannot be resolved.'所以我试着改成:
MainActivity.writefile(fOut, ib1, osw, message);
但是现在,'writefile' 下划线有一个 static/non-static 问题。为了摆脱这个错误,我尝试在 MainActivity 中将函数设为静态,但是 'openFileOutput' 开始抱怨 static/non-static.
我也愿意将函数放入我的 Receiver class 中,以便每次都从同一个 class 调用,但是像 'openFileOutput' 这样的函数无法解析,因为 Receiver 可以仅扩展 BroadcastReceiver。
我也愿意在 onReceiver 上调用另一个 activity 并在那里完成我的工作,但我也找不到实现它的方法。
任何人都可以就此问题向我提供任何帮助吗?提前致谢。
openFileOutput()
是 Context
上的一个方法。你的 activity 是一个 Context
,你的接收者在 onReceive()
中得到一个 Context
传递给它。因此,使 writefile()
方法成为 static
,并传入一个 Context
作为参数。然后,对传入的 Context
调用 openFileOutput()
。您的 activity 可以通过为 Context
传入 this
来使用 static
方法。你的接收者可以通过传入你在 onReceive()
.
中得到的 Context
来使用 static
方法
然后,确保您只在后台线程上调用 writefile()
。
在我的 MainActivity 中,我有以下功能:
public void writefile (FileOutputStream fOut, String fileName, OutputStreamWriter osw, String message){
try {
fOut = openFileOutput(fileName, MODE_WORLD_READABLE);
osw = new OutputStreamWriter(fOut);
osw.write(message);
osw.flush();
osw.close();
}
catch (IOException ioe){
ioe.printStackTrace();
}
}
此应用的短信接收器必须是非动态的(无布局),并且在我的 onReceive 方法中,我尝试调用函数:
writefile(fOut, ib1, osw, message);
我的参数都没问题,但是'writefile'变成了红色'cannot be resolved.'所以我试着改成:
MainActivity.writefile(fOut, ib1, osw, message);
但是现在,'writefile' 下划线有一个 static/non-static 问题。为了摆脱这个错误,我尝试在 MainActivity 中将函数设为静态,但是 'openFileOutput' 开始抱怨 static/non-static.
我也愿意将函数放入我的 Receiver class 中,以便每次都从同一个 class 调用,但是像 'openFileOutput' 这样的函数无法解析,因为 Receiver 可以仅扩展 BroadcastReceiver。
我也愿意在 onReceiver 上调用另一个 activity 并在那里完成我的工作,但我也找不到实现它的方法。
任何人都可以就此问题向我提供任何帮助吗?提前致谢。
openFileOutput()
是 Context
上的一个方法。你的 activity 是一个 Context
,你的接收者在 onReceive()
中得到一个 Context
传递给它。因此,使 writefile()
方法成为 static
,并传入一个 Context
作为参数。然后,对传入的 Context
调用 openFileOutput()
。您的 activity 可以通过为 Context
传入 this
来使用 static
方法。你的接收者可以通过传入你在 onReceive()
.
Context
来使用 static
方法
然后,确保您只在后台线程上调用 writefile()
。