gpt4 book ai didi

java - 如何从非动态接收器调用 MainActivity 中带参数的函数?

转载 作者:行者123 更新时间:2023-12-01 09:34:07 26 4
gpt4 key购买 nike

在我的 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”变成红色并且“无法解析”。所以我尝试将其更改为:

MainActivity.writefile(fOut, ib1, osw, message);

但是现在,“writefile”带有下划线,存在静态/非静态问题。为了摆脱这个错误,我尝试在 MainActivity 中将该函数设置为静态,但是随后“openFileOutput”开始提示静态/非静态。

我也愿意将该函数放入我的 Receiver 类中,以便每次都从同一个类中调用,但是像“openFileOutput”这样的函数无法解析,因为 Receiver 只能扩展 BroadcastReceiver。

我也愿意在 onReceiver 上调用另一个 Activity 并在那里完成我的工作,但我也找不到实现它的方法。

有人可以就这个问题向我提供帮助吗?提前致谢。

最佳答案

openFileOutput()Context 上的一个方法。您的 Activity 是一个 Context,您的接收者会在 onReceive() 中获取传递给它的 Context。因此,将 writefile() 方法设置为static,并传入 Context 作为参数。然后,在传入的 Context 上调用 openFileOutput()。您的 Activity 可以通过传入 this 作为 Context 来使用 static 方法。您的接收者可以通过传入您在 onReceive() 中获得的 Context 来使用 static 方法。

然后,确保您仅在后台线程上调用 writefile()

关于java - 如何从非动态接收器调用 MainActivity 中带参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39151401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com