我正在为我自己的设备开发自己的android版本,而不是使用一些商用手机。 这意味着我控制平台/ android构建。即我不在Android上的应用程序上工作,我在android本身内部工作。
我正在尝试显示关闭(或以任何其他方式通知用户)shutdownIfOverTemp()关闭的原因(例如,diplay to toast“电池过热,关闭”)。原因是我运行的电池有额外的关机条件,我希望用户知道哪一个正在运行(无需查看一些日志)
当谷歌调用文件AndroidService.java时,它不是服务,因为它不扩展服务,它扩展了Binder(完全来源:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.4_r1.2/com/android/server/BatteryService.java/)我不知道如何将上下文传递给Toast:
Toast toast = Toast.makeText( getApplicationContext(), "Battery overheating!", Toast.LENGTH_LONG);
不起作用,我在getApplicationContext()上得到一个未定义的符号:
target Java: services (out/target/common/obj/JAVA_LIBRARIES/services_intermediates/classes)
frameworks/base/services/java/com/android/server/BatteryService.java:244: cannot find symbol
symbol : method getApplicationContext()
location: class com.android.server.BatteryService
Toast toast = Toast.makeText(getApplicationContext(), "Battery overheating!", Toast.LENGTH_SHORT);
添加这个也无济于事:
import android.widget.Toast;
import android.content.Context;
import android.content.ContextWrapper;
答案 0 :(得分:1)
该类扩展了binder
class BatteryService extends Binder {
但调用BatteryService方法时已将上下文作为其参数之一:
public BatteryService(Context context, LightsService lights) {
mContext = context;
所以在调用toast时使用mContest而不是getApplicationContest
尝试并报告。