我有一行代码如下: val smsRetrieverStatus = extrasObj?.get(SmsRetriever.EXTRA_STATUS) as Status 但是现在它已经被标记为过时的,如下所示: 有没有其他替代方法可以避免获取过时警告?
如果你阅读这里的方法文档,它说: 此方法已在API级别33中被弃用。使用类型安全的特定API,具体取决于要检索的项的类型,例如getString(java.lang.String) 所以,他们告诉你停止使用通用的get()方法,而是使用特定于类型的方法--getString(),getInt(),getLong()等。 更新:如果您有自定义类或数据类型,则需要实现自己的逻辑来序列化该类(可能使用类似Gson的工具)。一旦将其序列化为String,则可以使用getString()。
你可以尝试另一种方法。val status = extrasObj?.getParcelable(SmsRetriever.EXTRA_STATUS, Status::class.java) 请注意,这种方法不稳定,有时会抛出NPE。因此,最好捕获和处理NPE异常。
getParcelable <T>
和getSerializable <T>
- 而且你的对象必须是其中之一,才能首先放置在Bundle
中。 - Agent_L