【问题标题】:Intent Settings.ACTION_DEVICE_INFO_SETTINGS is not working on 4.1.2 and 4.2 AndroidIntent Settings.ACTION_DEVICE_INFO_SETTINGS 不适用于 4.1.2 和 4.2 Android
【发布时间】:2014-08-14 12:31:20
【问题描述】:

我正在我的应用程序中启动Settings.ACTION_DEVICE_INFO_SETTINGS 意图。它适用于我拥有的大多数设备,除了 4.1.24.2。每当我尝试在此设备中启动上述意图时,设置应用程序都会强制关闭,这也会导致我的应用程序停止运行。

在启动Settings.ACTION_DEVICE_INFO_SETTINGS intent 之前有什么方法可以检查吗?或者至少可以防止停止我的应用程序? 我已经尝试将 startActivity(Intent) 放入 try-catch 块中。但这不是这里的问题,因为存在设置活动并且在执行onCreate() 时它会崩溃。

这是堆栈跟踪:

08-14 17:38:37.984: E/AndroidRuntime(9905): FATAL EXCEPTION: main
08-14 17:38:37.984: E/AndroidRuntime(9905): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.Settings$DeviceInfoSettingsActivity}: java.lang.NullPointerException
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2062)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2087)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.ActivityThread.access$600(ActivityThread.java:133)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1198)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.os.Looper.loop(Looper.java:137)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.ActivityThread.main(ActivityThread.java:4803)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at java.lang.reflect.Method.invokeNative(Native Method)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at java.lang.reflect.Method.invoke(Method.java:511)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at dalvik.system.NativeStart.main(Native Method)
08-14 17:38:37.984: E/AndroidRuntime(9905): Caused by: java.lang.NullPointerException
08-14 17:38:37.984: E/AndroidRuntime(9905):     at com.android.settings.DeviceInfoSettings.onCreate(DeviceInfoSettings.java:98)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:796)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.BackStackRecord.run(BackStackRecord.java:635)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.Activity.performStart(Activity.java:5017)
08-14 17:38:37.984: E/AndroidRuntime(9905):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2035)
08-14 17:38:37.984: E/AndroidRuntime(9905):     ... 11 more
08-14 17:38:37.984: W/ActivityManager(658):   Force finishing activity com.android.settings/.Settings$DeviceInfoSettingsActivity

【问题讨论】:

    标签: java android eclipse android-intent


    【解决方案1】:

    在启动 Settings.ACTION_DEVICE_INFO_SETTINGS 意图之前有什么方法可以检查吗?

    很遗憾,没有,因为 Intent 正在工作 - 您在这些设备上的“设置”应用程序中遇到了一些错误。

    或者至少可以防止停止我的应用程序?

    这次崩溃应该不会对您的应用程序产生任何影响。设置应用程序崩溃了,不是你。崩溃对话框将出现在您的应用上,但您的应用应该不受影响。

    【讨论】:

    • 感谢您的快速回复。但我的应用程序也越来越接近 Android ActivityManager。这是堆栈跟踪: 08-14 17:38:37.984: W/ActivityManager(658): 强制完成活动 com.android.settings/.Settings$DeviceInfoSettingsActivity 08-14 17:38:37.994: W/ActivityManager(658) : 强制完成活动 com.my.android.mynext/.activities.MYActivity
    • @Audumbar:这当然令人失望。我不知道为什么 Android 在这种情况下会强制完成您的活动。欢迎您使用Build.VERSION.SDK_INT 或其他东西作为粗略过滤器,以避免在给您带来麻烦的版本上启动此活动。或者,考虑以其他方式解决您的问题(例如,如果数据是可通过 SDK 访问的数据,则您自己在此设置屏幕中显示您想要的数据)。
    • 正确。即使我尝试在不同的任务中启动设置意图: actionIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);但它仍然失败了。无论如何感谢 CommonsWare。
    • 正如您所建议的,我正在使用 Build.VERSION.SDK_INT 检查版本 16 和 17,而不是调用 startActivity(intent)。它对我来说工作正常。但在某些 4.1.2 设备中,意图 Settings.ACTION_DEVICE_INFO_SETTINGS 正在工作。所以现在我的问题是如何区分这两种设备?提前致谢。
    • @Audumbar:“所以现在我的问题是如何区分这两种设备?” - 我不知道。如果问题是设备不支持Intent 操作,而您得到了ActivityNotFoundException,则可以采取一些方法来处理它。但在您的情况下,设置应用程序声称尊重该操作,然后崩溃,我不知道有任何可靠的方法可以提前确定会发生这种情况。
    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多