我正在使用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
答案 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。