android - Intent extra 未在特定设备上交付

标签 android android-intent

在 Activity A 中,我基本上有:

Long customerId = 123;
intent.putExtra("customerId", customerId);
startActivity(intent);

在 Activity B 的 onCreate() 中我有:

mCustomerId = getIntent().getLongExtra("customerId", -1);

但对于我的一个用户(Nexus 4、Android 6.0.1),mCustomerId 在 Activity B 中解析为 -1(-1 是默认值)。此代码适用于我的其他 1000 个用户。

同一位用户在我使用的库中收到一个额外的 Intent 时遇到了类似的问题:

https://github.com/Ereza/CustomActivityOnCrash/issues/56

这怎么会发生?

日志:

Fatal Exception: java.lang.IllegalArgumentException
Update is not supported for content://appinventor.ai_GavinGT.TipTracker_9_1_426am_ready_for_market/customers/-1
appinventor.ai_GavinGT.DeliveryTipTrackerPro_ready_for_market.data.TipProvider.update (TipProvider.java:326)
android.content.ContentProvider$Transport.update (ContentProvider.java:355)
android.content.ContentResolver.update (ContentResolver.java:1364)
appinventor.ai_GavinGT.DeliveryTipTrackerPro_ready_for_market.customer_info.CustomerProfileActivity.saveChanges (CustomerProfileActivity.java:208)
appinventor.ai_GavinGT.DeliveryTipTrackerPro_ready_for_market.customer_info.CustomerProfileActivity.access$400 (CustomerProfileActivity.java:58)
appinventor.ai_GavinGT.DeliveryTipTrackerPro_ready_for_market.customer_info.CustomerProfileActivity$6.onDebouncedClick (CustomerProfileActivity.java:137)
appinventor.ai_GavinGT.DeliveryTipTrackerPro_ready_for_market.custom_classes.DebouncedOnClickListener.onClick (DebouncedOnClickListener.java:39)
android.view.View.performClick (View.java:5204)
android.view.View$PerformClick.run (View.java:21153)
android.os.Handler.handleCallback (Handler.java:739)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:148)
android.app.ActivityThread.main (ActivityThread.java:5420)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:726)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)

从日志的第二行可以看出,-1 作为 customer 表的 rowId 被插入,而它应该是 123(123 只是一个例子,rowId 可以是任何大于 0 的数字)。

编辑:我开始认为这个人可能正在研究我在 ADB 中的应用程序。这可以解释为什么没有交付 Intent 额外内容:

A user is somehow accessing Pro features in the Free version

最佳答案

确保您没有使用标准(默认)以外的任何启动模式。如果您在 Manifest 文件中的接收 Activity 中使用 launchMode 属性,那么您必须相应地处理接收 Activity (如果当前任务中已经存在 Activity ,您可能必须重写 onNewIntent 方法)。 有关更多信息,请阅读此文档 - https://developer.android.com/guide/components/activities/tasks-and-back-stack

关于android - Intent extra 未在特定设备上交付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52214960/

相关文章:

android tabwidget Intent 选项卡刷新每次点击

android:将文件附加到邮件

android - IOS/Android 的 React Native 中的用户权限

java - Android Studio firestore获取得分最高的用户名

android - Android O 中的通知标记

javascript - 来自 Actionscript 3 应用程序的 Twitter 意图弹出窗口

java - 短信气球/长聊天框

android - 我如何将参数从 Jenkins 传递到 build.gradle?

java - 有意传递很长时间,总是出错

android - 为什么我收到错误 "MyActivity is not an enclosing class?"