- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 4.4.2 和 4.4.3 设备上不断发生崩溃(尽管我不确定这是 API 问题),在某些 ParsePushBroadcastReceiver
中,以下代码导致 NullPointerException
位于 startActivities
调用的深处。
Intent intent = new Intent(context, SomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
TaskStackBuilder.create(context)
.addParentStack(SomeActivity.class)
.addNextIntent(intent)
.startActivities();
我已经尝试测试上下文是否为空,但是,Intent 实例化会捕捉到这一点。可能还值得注意的是,此应用程序正在使用 Parse Push
。这次崩溃的崩溃日志:
java.lang.RuntimeException: Unable to start receiver com.example.app.android.receiver.PushReceiver: java.lang.NullPointerException
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2567)
at android.app.ActivityThread.access$1800(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1341)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1471)
at android.os.Parcel.readException(Parcel.java:1419)
at android.app.ActivityManagerProxy.startActivities(ActivityManagerNative.java:4494)
at android.app.Instrumentation.execStartActivitiesAsUser(Instrumentation.java:1496)
at android.app.Instrumentation.execStartActivities(Instrumentation.java:1458)
at android.app.ContextImpl.startActivities(ContextImpl.java:1465)
at android.content.ContextWrapper.startActivities(ContextWrapper.java:350)
at android.content.ContextWrapper.startActivities(ContextWrapper.java:350)
at android.support.v4.content.ContextCompatJellybean.startActivities(ContextCompatJellybean.java:26)
at android.support.v4.content.ContextCompat.startActivities(ContextCompat.java:105)
at android.support.v4.app.TaskStackBuilder.startActivities(TaskStackBuilder.java:325)
at android.support.v4.app.TaskStackBuilder.startActivities(TaskStackBuilder.java:301)
at com.example.app.android.receiver.PushReceiver.routePush(PushReceiver.java:59)
at com.example.app.android.receiver.PushReceiver.onPushOpen(PushReceiver.java:35)
at com.parse.ParsePushBroadcastReceiver.onReceive(ParsePushBroadcastReceiver.java:108)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2552)
at android.app.ActivityThread.access$1800(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1341)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(NativeStart.java)
最佳答案
我无法解决这个问题,因为我怀疑这可能是 4.4.* 设备特有的错误。作为替代方案,我将使用 TaskStackBuilder
替换为通过 PendingIntent.getActivities
创建我的 Activity 。就我而言,这提供了等效的功能,并且是一个直接的替代品。也许您也会发现它很有用。
final Intent parentIntent = new Intent(context, ParentActivity.class);
parentIntent.putExtra(ParentActivity.EXTRA, extraValue);
final Intent childIntent = new Intent(context, ChildActivity.class);
childIntent.putExtra(ChildActivity.EXTRA, extraChildValue);
childIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
final Intent[] intents = new Intent [] {parentIntent, childIntent};
PendingIntent pendingIntent = PendingIntent.getActivities(context, INTENT_REQUEST_CODE, intents, PendingIntent.FLAG_ONE_SHOT);
pendingIntent.send();
关于android - TaskStackBuilder#startActivities() NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28754754/
我尝试按照 android 教程在 Android O 中测试 Notification Channel。当我进入显示通知的步骤时,我看到他们使用 TaskStackBuilder,我想知道 addP
TaskStackBuilder 到底有什么问题,它在开始新 Activity 时使用了这种丑陋的过渡。: TaskStackBuilder taskStackBuilder = TaskSt
我想做的是在 Android 中创建一个通知,只要它被点击就会打开一个 Activity。此 Activity 称为“NotificationsActivity”,其父 Activity 为“Main
我正在按照示例 here 设置通知.我的应用程序与 API 15 和其他版本兼容。这是我的代码: @Override public void onReceive(Context context
我正在尝试使用 TaskStackBuilder带有通知以创建返回堆栈以供后退按钮通过。我的应用程序的正常流程: Activity A 从启动器启动。 用户从 A 中选择一个项目,该项目启动 B 并附
我正在使用 Android L 转换,在 Intent 中传递 ActivityOptions 包。如何使用 TaskStackBuilder 以相同的 Intent 重现动画? 这是我目前使用单个
为什么我们在创建通知时使用TaskStackBuilder?我不明白它背后的逻辑。 谁能解释一下。 public void showText(final String text){ Inten
所以我正在研究 Android 通知, 我在 android documentation 上尝试了一个通知示例: 在其中一个示例中,它展示了如何通过通知打开 Activity 。 所以问题是:当我尝试
我在 4.4.2 和 4.4.3 设备上不断发生崩溃(尽管我不确定这是 API 问题),在某些 ParsePushBroadcastReceiver 中,以下代码导致 NullPointerExcep
我需要这样的流程:当通知出现并且用户单击它时,activityB 应该启动,如果用户单击后退按钮它应该转到 activityA,我的问题是,当用户单击通知并且 activityB 正在启动时,堆栈为空
我正在使用 Android TaskStackBuilder 在单击通知时使用预定义堆栈创建通知。 在应用程序中我有 2 个 Activity : MainActivity 启动器 Activity
当 Activity 中发生某些事件时,我会向用户显示一条通知。当我创建通知时,如果我的 Activity 被系统清除,我会使用 TaskStackBuilder 来确保我有 backstack Ac
我在将 TaskStackBuilder 和不同的 PendingIntents 组合用于通知时遇到问题。让我解释一下它是关于什么的。 我有一个 IntentService,它会在出现问题时创建通知。
我正在尝试为使用此代码按下通知的 Activity 重新创建返回堆栈: Intent firstIntent = new Intent(this, First.class); Intent seco
在我的例子中,我有一个使用 startActivityForResult 调用 Activity B 的 Activity A。 Activity B 是一种将数据返回给 Activity A 的表单
我正在尝试从 Android 文档解释的通知中启动一个 Activity ,但是当我打开通知然后按后退按钮时,HomeActivity(父级)没有打开,而是应用程序关闭。我做错了什么? Int
我正在创建在用户设置的时间发出通知的 android 应用程序,当我设置时间并且这个时间到了时,该应用程序会给我以下异常 FATAL EXCEPTION: main java.lang.NoCla
我正在我们的应用程序中开发一些很酷的推送通知并进行一些测试以涵盖当用户单击其中一个通知时应用程序会启动正确的 Intent 以打开正确的 Activity。 在我们的应用程序中,我们有一个 Start
从通知启动我的应用程序时,我需要创建一个合成返回堆栈,因为目标屏幕是进入应用程序导航的几个步骤。如果不使用仅支持 Android 2.3 的 TaskStackBuilder,我该如何做到这一点? 更
我有一个 Activity A,在 Manifest 中用 android:launchMode="singleTask" 声明和另一个没有更多属性的 Activity B。 据我所知,如果已经有一些
我是一名优秀的程序员,十分优秀!