相关疑难解决方法(0)

如何在Parcel的帮助下将Parcelable编组并解组为字节数组?

我想编组和解组一个实现Parcelable/来自字节数组的类.我很清楚Parcelable表示不稳定,因此不适用于实例的长期存储.但我有一个用例,我需要序列化一个对象,如果由于内部Android更改而解组失败,它不是一个showstopper.该类已经在实现该Parcelable接口.

给定一个类MyClass implements Parcelable,我如何(ab)使用Parcelable接口进行编组/解组?

android marshalling unmarshalling parcel parcelable

41
推荐指数
1
解决办法
2万
查看次数

如何才能正确地将唯一的附加内容传递给待处理的意图?

我遇到了一个问题,alarmManager并且还有与其相关的额外内容.

如果我设置多个警报,它们将会关闭,但附加功能保持不变.

我已经读过这些问题:

我试过了:

  • 为每个待处理的意图分配一个唯一的ID
  • 使用所有待定的意图标志,

一切都无济于事.我不知道为什么它不起作用.

这是一段代码:

Intent intent = new Intent(con,
                    AppointmentNotificationReciever.class);
            intent.putExtra("foo", bar.toString());


            int id = randomNum;

            PendingIntent sender = PendingIntent.getBroadcast(con, id,
                    intent, PendingIntent.FLAG_UPDATE_CURRENT);


            AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE);
            am.set(AlarmManager.RTC_WAKEUP, scheduleExecution, sender);
Run Code Online (Sandbox Code Playgroud)

android alarmmanager extras android-intent android-pendingintent

23
推荐指数
2
解决办法
2万
查看次数

Android 7 BroadcastReceiver onReceive intent.getExtras丢失数据

我的应用程序无法在Android 7上运行。调用了我的BroadcastReceiver.onReceive方法,但缺少intent.getExtras的内容。我已验证数据已正确加载。这是我的onReceive方法的一个片段,其中intent作为参数传递给onReceive。

Bundle bundle = intent.getExtras();
textMessage = bundle.getString("TEXT_MESSAGE");
ArrayList<MyPhoneNumber> phoneNumbersToText = bundle.getParcelableArrayList("PHONE_NUMBERS");
Run Code Online (Sandbox Code Playgroud)

textMessage和phoneNumbersToText均为null。

这是清单文件中的片段:

<receiver android:process=":remote" android:name="com.friscosoftware.timelytextbase.AlarmReceiver"></receiver> 
Run Code Online (Sandbox Code Playgroud)

以下是加载数据的代码段:

Intent intent = new Intent(context , AlarmReceiver.class);  
intent.putExtra(Constants.TEXT_MESSAGE, scheduledItem.getMessageToSend());
intent.putExtra(Constants.PHONE_NUMBERS, scheduledItem.getPhoneNumbersToText());    

PendingIntent sender = PendingIntent.getBroadcast(context, getRequestCodeFromKey(key), intent, PendingIntent.FLAG_UPDATE_CURRENT);

// Get the AlarmManager service
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, selectedDateTime.getTimeInMillis(), sender);
Run Code Online (Sandbox Code Playgroud)

相同的代码在Android 6中可以正常工作。

您对Android 7需要进行哪些更改有任何想法吗?

谢谢

broadcastreceiver android-7.0-nougat

9
推荐指数
2
解决办法
1624
查看次数

Android 7意图附加功能缺失

有没有人知道Android 7.0(Nougat)与Android 6.0(Lollipop)相比如何处理意图附加功能有什么变化?

长话短说:我的应用程序可以在4.1(16)到6.0(23)的所有版本上运行,但在android 7.0(24)上崩溃了!

该应用程序创建一个待定意图,意图是具有附加功能的自定义广播接收器.然而,在android 7上,广播接收器接收的意图中不存在任何附加内容.

MainActivity.java

Intent intent = new Intent(context, PollServerReceiver.class);

// TODO:  Remove after DEBUGGING is completed!
intent.putExtra("TESTING1", "testing1");
intent.putExtra("TESTING2", "testing2");
intent.putExtra("TESTING3", "testing3");

 // PendingIntent to be triggered when the alarm goes off.
 final PendingIntent pIntent = PendingIntent.getBroadcast(context,
            PollServerReceiver.REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);

// Setup alarm to schedule our service runs.
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, firstRun, freqMilis, pIntent);
Run Code Online (Sandbox Code Playgroud)

PollServerReceiver.java

Bundle extras = intent.getExtras();
Log.d(TAG, "onReceive: TESTING1 = " + extras.getString("TESTING1")); // null here

// None of …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-pendingintent android-broadcastreceiver android-7.0-nougat

7
推荐指数
1
解决办法
2966
查看次数