如何从广播接收器调用GetAppContext?

切斯特4321

我正在尝试建立一个应用程序,在该应用程序中我从广播接收器更新数据库,但是当我拥有它的类时,我无法扩展其中有getAppContext的AppCompatActivity,数据库调用需要它,我该如何克服它?

 public class AlarmReceiver extends BroadcastReceiver {

public static AppDatabase database;

@Override
public void onReceive(Context context, Intent intent) {
            database = Room.databaseBuilder(getAppContext(), AppDatabase.class, "mydb").
//get app context is red there, "cant resolve method"

                    allowMainThreadQueries().

                    build();

            UserDAO userDAO = database.getUserDAO();
            User user1 = new User();
            user1.setId(2);
            user1.setName("xDDDD");
            user1.setPassword("1234");
            userDAO.insert(user1);
        }
    }
艾哈迈德

您可以:

1-制作一个Application类MyApplication,以扩展Application类并将其用作接收者的全局上下文

2-(不保证,您可以尝试)将在onReceive方法中收到的context参数转换为AppCompatActivity,然后调用getAppContext

提示*我不建议在onReceive方法中使用数据库代码。最好制作另一个服务或intentservice并让该服务处理数据库代码。

编辑:

首先在主程序包中创建新类:

public class MyApplication extends Application {

    private static Context context;

    public void onCreate() {
        super.onCreate();
        MyApplication.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return MyApplication.context;
    }
}

然后在Android Manifest文件中,声明以下内容。

<application android:name="your.package.name.MyApplication">

</application>

现在,在您的onReceive方法中或任何地方,您都可以调用MyApplication.getAppContext()以获取您的应用程序上下文。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

广播接收器

来自分类Dev

如何注入广播接收器

来自分类Dev

广播接收器“接收”方法没有被调用吗?

来自分类Dev

Android-如何触发广播接收器以调用其onReceive()方法?

来自分类Dev

广播接收器无法正常工作,不会调用onReceive()。我该如何解决?

来自分类Dev

在Android 6上未调用SMS广播接收器

来自分类Dev

Android广播接收器已调用但未运行

来自分类Dev

为什么广播接收器不调用服务

来自分类Dev

广播接收器vs唤醒广播接收器

来自分类Dev

广播接收器或服务?

来自分类Dev

如何使用广播接收器检测蓝牙状态变化?

来自分类Dev

GPS开启/关闭时如何触发广播接收器?

来自分类Dev

如何在服务中使用广播接收器

来自分类Dev

如何管理服务中的广播接收器

来自分类Dev

如何在Android中注销广播接收器

来自分类Dev

应用关闭时如何检测广播接收器?

来自分类Dev

粘性广播接收器-它们如何工作?

来自分类Dev

如何在服务中使用广播接收器

来自分类Dev

如何在广播接收器中启动服务?

来自分类Dev

如何从广播接收器发出通知

来自分类Dev

广播接收器如何在活动之间工作?

来自分类Dev

如何在广播接收器中访问 MyViewModel(AndroidViewModel)

来自分类Dev

接收并注册广播接收器

来自分类Dev

如何在其他广播接收器之后运行广播接收器?安卓

来自分类Dev

我的广播接收器未从本地服务接收广播

来自分类Dev

Android 广播接收器未接收显式广播?

来自分类Dev

使用清单注册广播接收器

来自分类Dev

广播接收器未注册

来自分类Dev

广播接收器的生命周期