跟踪预启动报告中报告的错误 - java.lang.NullPointerException - android.accounts.Account

问题描述 投票:0回答:2

我最近在 Play 商店中更新了我的第一个 Android 应用程序,预发布报告报告了特定设备上的一个错误。提供的堆栈跟踪如下:

FATAL EXCEPTION: main
Process: com.google.android.gm, PID: 9714
java.lang.NullPointerException: Attempt to invoke virtual method 'android.accounts.Account com.android.mail.providers.Account.b()' on a null object reference
    at dgg.Z(PG:3)
    at dgg.onPrepareOptionsMenu(PG:6)
    at com.google.android.gm.ComposeActivityGmail.onPrepareOptionsMenu(PG:1)
    at android.app.Activity.onPreparePanel(Activity.java:4137)
    at gn.onPreparePanel(PG:2)
    at vz.onPreparePanel(Unknown Source:2)
    at tm.onPreparePanel(PG:3)
    at tv.a(PG:192)
    at tv.f(PG:7)
    at tc.run(PG:2)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:237)
    at android.app.ActivityThread.main(ActivityThread.java:8016)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)

问题是我希望在上面的跟踪中看到我的一个文件和行号,但没有,所以我不确定如何找出此错误的原因。

跟踪提到“ComposeActivityGmail”。我的应用程序中唯一与 Gmail 有关的地方是我的设置菜单中的一个选项,该选项使用以下代码启动“发送电子邮件”意图,所以我猜测错误就在这里。

public class SettingsMenuFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle bundle, String s) {

        addPreferencesFromResource(R.xml.app_preferences);
        Preference feedbackPreference = findPreference("keyFeedback");

        Objects.requireNonNull(feedbackPreference).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference preference) {

                Intent intent = new Intent(Intent.ACTION_SENDTO);
                intent.setData(Uri.parse("mailto:")); // only email apps should handle this
                intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
                intent.putExtra(Intent.EXTRA_SUBJECT, "Fake Feedback");
                if (intent.resolveActivity(requireActivity().getPackageManager()) != null) {
                    startActivity(intent);
                }
                return true;
            }
        });

有人对如何更好地理解堆栈跟踪有任何建议,或者以下代码片段中可能有什么问题吗?

更新 因此,在预发布报告中遇到问题的设备是三星。我自己购买了一台三星设备并成功重现了该问题。当我单击反馈首选项时,电子邮件客户端选择弹出窗口打开,但我的应用程序死机了。然后我将手机插入笔记本电脑并在 android studio 中以调试模式运行相同的代码库,但它运行得很好。再次从 Play 商店安装了该应用程序(仍然是与以前相同的版本),现在它可以完美运行。好困惑!

android
2个回答
18
投票

这个问题没有办法解决。 我认为这只是旧版本 Gmail 应用程序的问题,当前版本已经解决。 如果用户更新 Gmail 应用程序,该错误将不会重现。

我成功地重现了这个异常。 我有一部 Android 10 三星智能手机。我重置了手机并尝试从我的应用程序启动 Gmail。这时候就出现了这个问题。 Gmail版本为2019.11.21.283644823.release 更新 Gmail 应用程序后,该问题不再出现。


0
投票

我认为错误不是来自你这边,谷歌播放控制台给你错误,因为谷歌会自动随机测试你的应用程序。

在应用程序的测试过程中可能具有共享功能并且它会触发,因此我认为来自谷歌的自动化随机测试是通过模拟完成的。

所以基本上,当触发共享功能并选择任何需要谷歌登录的谷歌应用程序(例如 Gmail 或其他)时,因此模拟不可用且登录应用程序,

这就是此错误的原因。

© www.soinside.com 2019 - 2024. All rights reserved.