我有一个最近上传到Play商店的应用程序,并且启用了Crashlytics.在此应用程序中,有一个名为StartQuizActivity的活动,该活动是在开发过程中创建的,但当前未使用.该活动仍在清单中声明,但在应用程序中没有调用它的意图.
我收到了一份崩溃报告,其中显示了堆栈跟踪,提示设备尝试启动此活动,导致IllegalArgumentException异常,提示未通过意图传递所需的对象:
Fatal Exception: java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.fractalWrench.acIDtest/com.fractalWrench.acIDtest.activitIEs.StartQuizActivity}:
java.lang.IllegalArgumentException: No extras supplIEd to
startQuizActivity!
StartQuizActivity.java
@H_404_19@@OverrIDe protected voID onCreate(Bundle savedInstanceState) { aminoAcID = getIntent().getExtras().getParcelable(AMINO_ACID); super.onCreate(savedInstanceState); if (aminoAcID != null) { // do things } else { throw new IllegalArgumentException("No extras supplIEd to startQuizActivity!"); }
鉴于无法使用应用程序的UI启动StartQuizActivity,设备为何能够启动此活动?我注意到该设备是运行API 21的扎根Nexus,并且在应用程序中的其他活动中也遇到过类似的崩溃.即使尝试过MonkeyRunner,我也无法在任何设备上重现崩溃.
这是Google的某种形式的自动化测试,还是具有特定设备设置的用户?任何想法将不胜感激.
AndroIDManifest.xml
@H_404_19@<activity androID:name=".activitIEs.StartQuizActivity" androID:label="@string/activity_Title_prepare_for_quiz" />
解决方法:
当您使用androID:exported =“ true”将活动添加到清单中时(活动的默认设置),该活动便成为任何应用程序均可调用的公共API的一部分.
可以理解的是,对于其他应用程序而言,很少有理由无缘无故地从另一个应用程序显式启动随机活动的情况非常罕见,但是像Tasker这样的应用程序确实允许最终用户执行此 *** 作.
你可以
>从清单中删除活动-显然,这完全删除了任何启动活动的能力
>添加androID:exported =“ false”-这可确保其他应用无法启动活动
>如果没有提供其他服务,请致电finish(),立即停止活动.
以上是内存溢出为你收集整理的java-为什么未使用的活动上传到Play商店时会引发异常?全部内容,希望文章能够帮你解决java-为什么未使用的活动上传到Play商店时会引发异常?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)