我一直收到此错误,实际上,在手机上(在Android Studio上)编译时,我没有任何错误。请帮我! (由于我是新手,所以我无法添加图片。但是您可以查看下面的屏幕截图)
https://i.stack.imgur.com/SMHyH.png
public class AlarmReceiver extends BroadcastReceiver {
int notificationID;
private SharedPreferences.Editor editor;
private SharedPreferences.OnSharedPreferenceChangeListener sharedpreflistener;
private SharedPreferences sharedPreferences;
private String MAIN_DATA = "com.xxx.xxx.MAIN";
public void waterDataClear() {
editor = sharedPreferences.edit();
editor.putFloat(WATER_DATA, 0);
editor.putBoolean(WATER_DIALOG, true);
editor.putInt(WATER_ML, 0);
editor.apply();
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onReceive(Context context, Intent intent) {
sharedPreferences = context.getSharedPreferences(MAIN_DATA, Context.MODE_PRIVATE);
Bundle extras = intent.getExtras();
notificationID = Objects.requireNonNull(extras).getInt("NotificationID");
if (notificationID == 10) {
waterDataClear();
notificationID = 0;
}
}
}
创建BroadcastReceiver是一部分,注册是另一部分。
创建后,您需要告诉android系统,您的应用程序想要在名为“ AlarmReceiver”的BroadcastReceiver上注册,以便发送给该广播的任何广播都可以由注册到它的任何应用程序接收。
您可以通过在应用程序的主清单文件中启用来注册自定义的BroadcastReceivers:
<receiver android:name=".MyBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
</intent-filter>
</receiver>