アラーム マネージャーを使用して、アプリの sqlite データベースから値を取得しようとしています。SQLiteOpenHelper を拡張する DB クラスにはコンテキストが必要であり、broadcastreceiver は次のようなコンテキストを取得します。
@Override
public void onReceive(Context context, Intent intent) {
問題は、このコンテキストで DB クラスを呼び出すと、次の例外が発生することです。
レシーバー com.ayham.mycar.AlarmBroadcastReceiver を開始できません: java.lang.ClassCastException: android.app.ReceiverRestrictedContext
完全なコードは次のようになります。
public class AlarmBroadcastReceiver extends BroadcastReceiver {
NotificationManager nm;
@Override
public void onReceive(Context context, Intent intent) {
//get the values from the DB:
DBhelper mDBGet=new DBhelper(context);
Cursor mCursor=mDBGet.allProperties((Activity) context);}}
コンテキストをアクティビティにキャストするべきではないことはわかっていますが、キャストしないとコンパイラからエラーが返されます。どうすればこれを行うことができますか?