带phonegap的AlarmManager

2023-11-27

我正在使用 Phonegap 的 StatusBarNotification 插件 (Android) 来触发通知。现在我想在特定时间执行此操作,根据我所读的内容,我必须使用 Android 的 AlarmManager。我尝试了一些方法,但似乎无法使其发挥作用。

关于我如何做到这一点有什么建议吗?

编辑: 如果我将代码放在 onReceive() 到 showNotification() 中,我可以获得通知。 问题似乎是接收器没有收到警报。可能是因为我在 IntentFilter 中没有正确的操作。

这是我的代码。我已经从 Phonegap 的 StatusBarNotification 插件构建了它,发现here

public class StatusBarNotification extends Plugin {
//  Action to execute
public static final String ACTION="notify";

private Context context;
BroadcastReceiver receiver;

public StatusBarNotification() {
    this.receiver = null;
}

public void setContext(PhonegapActivity ctx) {
    super.setContext(ctx);
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(); //Dunno what to put here
    if(receiver == null) {
        this.receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Log.d("Notification", "inside onReceive");
                /*int icon = R.drawable.notification;
                long when = System.currentTimeMillis();
                NotificationManager manager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);

                Intent notificationIntent = new Intent(context, context.getClass());
                PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
                Notification noti = new Notification(icon, "NOTIFICATION", when);
                noti.setLatestEventInfo(context, "TITLE", "TEXT", contentIntent);
                manager.notify(1, noti);
                */
            }
        };
        ctx.registerReceiver(this.receiver, intentFilter);
    }
}

/**
 *  Executes the request and returns PluginResult
 *
 *  @param action       Action to execute
 *  @param data         JSONArray of arguments to the plugin
 *  @param callbackId   The callback id used when calling back into JavaScript
 *
 *  @return             A PluginRequest object with a status
 * */
@Override
public PluginResult execute(String action, JSONArray data, String callbackId) {
    String ns = Context.NOTIFICATION_SERVICE;

    context = this.ctx.getApplicationContext();

    PluginResult result = null;
    if (ACTION.equals(action)) {
        try {

            String title = data.getString(0);
            String body = data.getString(1);
            Log.d("NotificationPlugin", "Notification: " + title + ", " + body);

            showNotification(title, body);
            result = new PluginResult(Status.OK);
        } catch (JSONException jsonEx) {
            Log.d("NotificationPlugin", "Got JSON Exception "
                    + jsonEx.getMessage());
            result = new PluginResult(Status.JSON_EXCEPTION);
        }
    } else {
        result = new PluginResult(Status.INVALID_ACTION);
        Log.d("NotificationPlugin", "Invalid action : "+action+" passed");
    }
    return result;
}

/**
 *  Displays status bar notification
 *
 *  @param contentTitle Notification title
 *  @param contentText  Notification text
 * */
public void showNotification( CharSequence contentTitle, CharSequence contentText) {
    Intent intent = new Intent(ctx, ctx.getClass());
    PendingIntent pi = PendingIntent.getBroadcast(ctx, 1234, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    Calendar cal = Calendar.getInstance();
    AlarmManager am = (AlarmManager) ctx.getSystemService(ctx.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi);

}

public void onDestroy() {
    if (this.receiver != null) {
        try {
            this.ctx.unregisterReceiver(this.receiver);
        } catch (Exception e) {
            Log.e("LOG TAG", "Error unregistering network receiver: " + e.getMessage(), e);
        }
    }
}

}


您应该使用 LocalNotification.js 设置特定日期和时间的警报。因为我用过而且效果很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带phonegap的AlarmManager 的相关文章

随机推荐

  • 如何否定进程的返回值?

    我正在寻找一个简单但跨平台的negate 否定进程返回值的进程 它应该将 0 映射到某个值 0 并将任何值 0 映射到 0 即以下命令应返回 yes nonexistingpath 不存在 ls nonexistingpath negate
  • Python:通过变量名引用对象属性? [复制]

    这个问题在这里已经有答案了 我正在用 Python 编写棋盘游戏 大富翁 大富翁 拥有三种类型的土地供玩家购买 房产 如木板路 铁路和公用事业 房产有 6 种条件 0 4 栋房屋或酒店 的可变购买价格和租金 铁路和公用事业有固定的价格和租金
  • Alamofire 接受和内容类型 JSON

    我正在尝试在 Swift 中使用 Alamofire 发出 GET 请求 我需要设置以下标题 Content Type application json Accept application json 我可以绕过它并直接指定请求的标头 但我
  • 将数组打印到文件

    我想将数组打印到文件中 我希望该文件看起来与这样的代码完全相同 print r abc 假设 abc 是一个数组 是否有任何单行解决方案可以解决此问题 而不是每种外观都常规解决方案 P S 我目前使用序列化 但我想让文件可读 因为序列化数组
  • Object.defineProperty 获取/设置闭包

    好的 我尝试这样创建新对象 var src a a b b c c var out for var prop in src Object defineProperty out prop get function return src pro
  • 尽管网站是 HTTPS,但 WebView 显示 ERR_CLEARTEXT_NOT_PERMITTED [重复]

    这个问题在这里已经有答案了 我开始在 Android 上开发一个应用程序 所以我没有太多东西 到目前为止我所拥有的只是一个 WebView 我在 Android Studio 中创建了该项目 并将我的项目设置为 Android Instan
  • 在 php 服务器端使用meteor.js

    我开发了一个应用程序 我想使用meteor js进行实时更新 我想增强但不改变我的程序 例如当用户添加评论时使其实时更新 问题是meteor js使用node js 因此javascript作为服务器端代码 我使用 LAMP 堆栈 是否可以
  • 阻止执行上传的php文件?

    在我的项目中 允许用户上传任何类型的文件 我需要确保安全 防止执行可由 php 解析的上传文件 php html 等 有没有办法告诉apache不要在web uploads中解析任何带有php的文件并简单地将它们显示为纯文本 还有什么其他选
  • Visual Studio 2013 编辑并继续不起作用

    使用 VS2013 Pro 我在调试 MFC 程序时无法使用 编辑并继续 我新建了一个MFC项目来测试 操作系统是 Windows 7 64 位 我正在运行 Visual Studio 2013 12 0 30110 00 Update1
  • 获取当前的 jupyter-lab 笔记本名称 [适用于 Jupyter-lab 版本 2.1 和 3.0.1 以及笔记本版本 >6.0.3)

    Problem Hi all 正如我的标题所示 我想访问笔记本名称 在Jupyter实验室 作为变量 所以我可以在笔记本本身中重用它 例如 命名笔记本中生成的一些图形文件 我看到几年前就有人提出过类似的问题 看这里 然而我没有找到满意的答案
  • Rails 如何决定使用 PUT 或 POST 方法渲染表单?

    Rails 生成一个表单部分 可以在由 get 操作呈现的页面和由新操作呈现的页面上使用 如果是前者 则表单的方法设置为 PUT 如果是后者 则表单的操作设置为 POST Rails 如何决定使用哪种方法 如果传递给表单的对象是persis
  • Symfony2 - 创建自己的供应商包 - 项目和 git 策略

    我们正在考虑创建自己的common用于实体映射和服务的捆绑包 可在几个单独的应用程序中使用 捆绑包应该易于修改 运行 包含和测试 我知道关于构建捆绑包的最佳实践 但我不知道什么git开发时使用的策略 我们是否应该创建common捆绑为整个项
  • android MediaRecorder setVideoSize() 的问题

    安卓可以吗MediaRecorder捕获分辨率高于的视频320 240 当我使用MediaRecorder setVideoSize 设置视频大小 捕获的视频分辨率均为320 240 更糟糕的是 较高的无法获得清晰的视频 它们莫名其妙地呈绿
  • 如何处理调用 API 的 Next.js 中动态路由的未找到 404? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我有一个由 React 和 Next js 在客户端开发的网站 并从 Asp Net core 服务器调用 API 来获取动态数据 例如产品和类别 问题是当我请求的 URL 中有未定义的参
  • 无法让我的 DatePickerDialog 以编程方式使用微调器样式

    我正在使用一个DialogFragment开一个DatePickerDialog public class DatePickerFragment extends DialogFragment Override public Dialog o
  • 使用 bootstrap 和 jquery 更改弹出窗口的标题

    这是链接的 html 即 a href style font size 6 color 222 class popover test laquo a 是的 我正在调用 popover 进行初始化 并且弹出窗口工作得很好 我可以毫无问题地更新
  • 从文件中读取随机行的简单方法是什么?

    在 shell 脚本中从文件中读取随机行的简单方法是什么 您可以使用shuf shuf n 1 FILE 还有一个实用程序称为rl 在 Debian 中它位于randomize lines软件包完全可以满足您的需求 但并非在所有发行版中都可
  • 如何在 Eclipse 中将常量重构为枚举?

    如何使用 Eclipse 将 Java 常量重构为枚举 我发现eclipse中没有内置功能 http help eclipse org juno index jsp topic 2Forg eclipse jdt doc user 2Fre
  • 使用 .NET 对象作为数据源时,为什么在 Crystal Reports 中出现“数据库登录失败”?

    我正在使用项目中的 NET 对象作为数据源创建一个简单的报告 使用SetDatasource 方法 但是 当我运行报告时 出现 数据库登录失败 错误 该报告根本没有连接到数据库 我在这里错过了什么吗 非常感谢 D 添加 我想如果我包含控制器
  • 带phonegap的AlarmManager

    我正在使用 Phonegap 的 StatusBarNotification 插件 Android 来触发通知 现在我想在特定时间执行此操作 根据我所读的内容 我必须使用 Android 的 AlarmManager 我尝试了一些方法 但似