android - 从 Intent 中获取额外信息(BaseAdapter => BroadcastReceiver)

标签 android android-intent broadcastreceiver alarmmanager android-pendingintent

我正在使用闹钟应用程序。我想添加当您点击特定区域时启用和禁用警报的功能(所有这些都应该在 listViewBaseAdapter 中发生)。我使用下面的代码和我的 BroadcastReceiver 在正确的时间触发。但!!!我无法从 intent extra 中获取数据:我得到了 default extra。

设置闹钟的函数:

public void setAlarm(int dayOfWeek, int hour, int minute, int position, int y) {
        // Add this day of the week line to your existing code
        Log.e("Point_1","Position " + position);
        Calendar calendar = Calendar.getInstance();

        Date previoudTime = calendar.getTime();
        calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);

        calendar.set(Calendar.HOUR, hour);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent intent1 = new Intent(context, MyReceiver_Alarm.class);
        intent1.putExtra("Size_ABC", y);
        intent1.putExtra("key", position);
        //Log.e("Point_1", "Compare1 " + calendar.getTime());
        Log.e("Point_1", "Compare2 " + previoudTime);
        Log.e("Point_1", "Compare " + calendar.getTime().compareTo(previoudTime));
        if(calendar.getTime().compareTo(previoudTime) < 0) {

            int a = calendar.get(Calendar.WEEK_OF_MONTH);
            calendar.set(Calendar.WEEK_OF_MONTH,a + 1);
            //Log.e("Point_1", "Less " + calendar.getTime());
        }
        Long alarmTime = calendar.getTimeInMillis();

        PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), position , intent1, 0);
        //Also change the time to 24 hours.
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent);
        Log.e("Point_1", "Time is " + calendar.getTime());
    } 

这就是我获得额外收入的方式

Log.e("Point_1","Position_intent " + intent.getIntExtra("key",178989800));

猜猜我得到了什么号码?对对对 178989800 如何让它正常工作?

谢谢。

最佳答案

代替

PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 
         position, intent1, 0);

PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(),
        position, intent1, PendingIntent.FLAG_UPDATE_CURRENT);

添加 PendingIntent.FLAG_UPDATE_CURRENT 确保您的“额外”被添加到 PendingIntent

关于android - 从 Intent 中获取额外信息(BaseAdapter => BroadcastReceiver),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986942/

相关文章:

java - 循环嵌套的 ArrayList 以使用 gson 显示来自 JSON 的值

java - 在 Activity 之间切换

android - 用于检测移动网络变化的广播接收器

android - 在数据库中同时调用三个方法

android - 如何检测 Android 设备中的新应用

android - 无法更新到 Android Studio gradle 1.4 插件

java - Android 无法在双 SIM 卡手机中捕获从属 SIM 卡的 Cell Id 和位置 Id

Android 4.0 Ice Cream Sandwich 解析器错误

android-intent - Android Intents - SetDataAndType 与 setData 和 setType 之间的区别?

java - 如何在Android上将对象从一个 Activity 传递到另一个 Activity