java elementtext,尝试在空对象引用上调用虚方法'java.lang.String org.jsoup.nodes.Element.ownText()'...

I am using below code to get versionName from playstore by using jsoup I am fetching details but its throwing some exception.

My code is

public class ForceUpdateAsync extends AsyncTask{

private String latestVersion;

private String currentVersion;

private Context context;

public ForceUpdateAsync(String currentVersion, Context context){

this.currentVersion = currentVersion;

this.context = context;

}

@Override

protected JSONObject doInBackground(String... params) {

try {

latestVersion = 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 new JSONObject();

}

@Override

protected void onPostExecute(JSONObject jsonObject) {

if(latestVersion!=null){

if(!currentVersion.equalsIgnoreCase(latestVersion)){

// Toast.makeText(context,"update is available.",Toast.LENGTH_LONG).show();

if(!(context instanceof SplashActivity)) {

if(!((Activity)context).isFinishing()){

showForceUpdateDialog();

}

}

}

}

super.onPostExecute(jsonObject);

}

public void showForceUpdateDialog(){

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(new ContextThemeWrapper(context,

R.style.DialogDark));

alertDialogBuilder.setTitle(context.getString(R.string.youAreNotUpdatedTitle));

alertDialogBuilder.setMessage(context.getString(R.string.youAreNotUpdatedMessage) + " " + latestVersion + context.getString(R.string.youAreNotUpdatedMessage1));

alertDialogBuilder.setCancelable(false);

alertDialogBuilder.setPositiveButton(R.string.update, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + context.getPackageName())));

dialog.cancel();

}

});

alertDialogBuilder.show();

}

}

but I am getting null pointer exception error

FATAL EXCEPTION: AsyncTask #1

Process: com.yabeee.yabeee, PID: 15893

java.lang.RuntimeException: An error occured while executing

doInBackground()

at android.os.AsyncTask$3.done(AsyncTask.java:304)

at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)

at java.util.concurrent.FutureTask.setException(FutureTask.java:222)

at java.util.concurrent.FutureTask.run(FutureTask.java:242)

at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)

at java.lang.Thread.run(Thread.java:818)

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method

'java.lang.String org.jsoup.nodes.Element.ownText()' on a null object

reference

at com.yabeee.yabeee.ModelClasses.ForceUpdateAsync.doInBackground(ForceUpdateAsync.java:53)

at com.yabeee.yabeee.ModelClasses.ForceUpdateAsync.doInBackground(ForceUpdateAsync.java:28)

at android.os.AsyncTask$2.call(AsyncTask.java:292)

at java.util.concurrent.FutureTask.run(FutureTask.java:237)

at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)

at java.lang.Thread.run(Thread.java:818)

Please some one help me to fix this issue.

解决方案

With updated code:

newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + mCom.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.hAyfc:nth-child(4) > span:nth-child(2) > div:nth-child(1) > span:nth-child(1)")

.first()

.ownText();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值