每次用户从Playstore打开应用程序时,应用程序都会崩溃

时间:2018-03-23 07:02:47

标签: android jsoup

尽管关注点与null有些相关,因为ownText()返回null,但是可以处理主要问题是使用的方法不够好我正在检查div[itemprop=softwareVersion。我已经更改了版本检查下面给出的答案,这只是在playstore上检查softwareVersion的版本。

原始问题 我有一个真正的应用程序,几天前工作正常,现在有一个问题,当用户从Play商店或从应用程序抽屉或主屏幕快捷方式打开应用程序时.app正在随机崩溃并且1/5正在启动好的

以下是版本检查器代码

build.gradle(app level)

compile 'org.jsoup:jsoup:1.8.3'

java代码:

public class VersionChecker extends AsyncTask<String, String, String> {
    String newVersion;
    Context context;
    public VersionChecker(Context context) {
        this.context = context;
    }
    @Override
    protected String doInBackground(String... params) {
        try {
            newVersion = Jsoup.connect("https://play.google.com/store    /apps/details?id=" + context.getPackageName() + "&hl=en")
                    .timeout(30000)
                    .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
                    .referrer("http://www.google.com")
                    .get()
                    .select("div[itemprop=softwareVersion]")
                    .first()
                    .ownText();
        } catch (IOException e) {
            e.printStackTrace();
        }

            return newVersion;
    } }

及以下是异常追踪

  

例外:   致命异常:主要进程:com.demo.android.myapp,PID:5325 java.lang.RuntimeException:无法恢复活动   {com.demo.android.myapp / com.demo.android.myapp.SplashActivity}:   java.lang.NullPointerException:尝试调用虚方法   'boolean java.lang.String.equalsIgnoreCase(java.lang.String)'上的一个   null对象引用   android.app.ActivityThread.performResumeActivity(ActivityThread.java:3103)   在   android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)   在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)   在android.app.ActivityThread.-wrap11(ActivityThread.java)处   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344)   在android.os.Handler.dispatchMessage(Handler.java:102)at   android.os.Looper.loop(Looper.java:148)at   android.app.ActivityThread.main(ActivityThread.java:5417)at   java.lang.reflect.Method.invoke(Native Method)at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)引起   by:java.lang.NullPointerException:尝试调用虚方法   'boolean java.lang.String.equalsIgnoreCase(java.lang.String)'上的一个   null对象引用   com.demo.android.myapp.SplashActivity.checkVersion(SplashActivity.java:81)   在   com.demo.android.myapp.SplashActivity.onResume(SplashActivity.java:242)   在   android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)   在android.app.Activity.performResume(Activity.java:6327)处   android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)   在   android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)   在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)   在android.app.ActivityThread.-wrap11(ActivityThread.java)处   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344)   在android.os.Handler.dispatchMessage(Handler.java:102)at   android.os.Looper.loop(Looper.java:148)at   android.app.ActivityThread.main(ActivityThread.java:5417)at   java.lang.reflect.Method.invoke(Native Method)at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,发现解决方案对我来说很好:

build.gradle(app level)

system("bash x")

java代码:

 compile 'com.squareup.okhttp:okhttp:2.5.0'