如何从非动态接收器调用 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()