0

アラーム マネージャーを使用して、アプリの 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);}}

コンテキストをアクティビティにキャストするべきではないことはわかっていますが、キャストしないとコンパイラからエラーが返されます。どうすればこれを行うことができますか?

4

1 に答える 1

1

放送受信機は非常に軽いはずです。したがって、それを行うための最良の方法は、それをアクティビティまたはサービスに委任することです...そして、アクティビティ/サービスを開始するときに、これをコンテキストとして使用できます。

于 2012-07-24T10:46:28.337 に答える