从服务器接收数据时出现Android错误

时间:2018-06-23 12:06:15

标签: java android

我正在使用Android: install .apk programmatically中的代码。

我正在尝试从服务器接收数据,以更新我的应用程序。

点击按钮后,应用崩溃。

如果您知道要解决这些错误很热,请告诉我。

我收到此错误:

"There's nothing here, yet."

我那里有错误:

android.os.NetworkOnMainThreadException

at com.example.appupdate.SelfInstall01Activity.GetVersionFromServer(SelfInstall01Activity.java:285)

at com.example.appupdate.SelfInstall01Activity$1.onClick(SelfInstall01Activity.java:89)

并且:

btnCheckUpdates.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View arg0)
        {
            GetVersionFromServer(BuildVersionPath);
           //here

            if(checkInstalledApp(AppName.toString()) == true)
            {
                Toast.makeText(getApplicationContext(), "Application Found " + AppName.toString(), Toast.LENGTH_SHORT).show();


            }else{
                Toast.makeText(getApplicationContext(), "Application Not Found. "+ AppName.toString(), Toast.LENGTH_SHORT).show();
            }
        }
    });

这是其余的代码:

HttpURLConnection c = (HttpURLConnection) u.openConnection();
    c.setRequestMethod("GET");
    c.setDoOutput(true);
    c.connect();
    //here

2 个答案:

答案 0 :(得分:0)

在主线程中执行网络操作时发生NetworkOnMainThreadException。您需要在doInBackground方法中执行网络操作

这里的按钮单击功能应该是这样的。

btnCheckUpdates.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View arg0)
        { 
           new YourTask().execute();
        }
    });

这是您的网络操作。

private class YourTask extends AsyncTask<String, String,String> {
     protected String doInBackground(String... urls) {

         // put here your network operation method
           GetVersionFromServer(BuildVersionPath)

        return null;
     }

 }

答案 1 :(得分:0)

在UI /主线程中发出网络请求时,将引发NetworkOnMainThreadException。因此,您需要在主线程上调用GetVersionFromServer()。 使用线程或AsyncTask。