我刚接触android编程,我有一些问题需要帮助,我被困在这一部分很长一段时间了。
问题:代码已成功编译,但建立连接进行检查会使其崩溃。你能告诉我是什么导致了这个问题,并向我提出了解决方案或帮助改进我的代码吗?谢谢。
流程:应用程序通过发送简单的HTTP连接检查其包名,以检查其要检查的应用程序是否存在于google play商店中。如果成功连接到google play商店中的应用程序页面,它将输出一个字符串,表明该页面存在,并且是合法的应用程序。
下面是我的代码片段
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
output3 = findViewById(R.id.output3);
output3.setMovementMethod(ScrollingMovementMethod.getInstance());
connection();
}
public void connection(){
try {
String packagename = "com.facebook.katana";
URL url = new URL("http://play.google.com/store/apps/details?id="+packagename+"&hl=en");
URLConnection urlConn = url.openConnection();
HttpURLConnection con = (HttpURLConnection) urlConn;
con.setUseCaches(false);
con.setAllowUserInteraction(false);
con.setRequestMethod("GET");
con.connect();
int status = con.getResponseCode();
if (status == HttpURLConnection.HTTP_NOT_FOUND){
output3.append("not from google play store");
}
if (status == HttpURLConnection.HTTP_OK) {
output3.append("google App Store");
}
if (status != HttpsURLConnection.HTTP_NOT_FOUND && status != HttpsURLConnection.HTTP_OK)
output3.append("Other Response");
con.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
发布于 2018-08-10 14:26:46
首先,主线程不再支持HTTP请求,因此必须使用并行线程,或者简单地使用AsyncTask。检查下面的AsyncTask代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
output3 = findViewById(R.id.output3);
output3.setMovementMethod(ScrollingMovementMethod.getInstance());
AsyncTask.execute(new Runnable() {
@Override
public void run() {
connection();
}
});
}
第二件事是确保在您的清单中添加了Internet权限。
https://stackoverflow.com/questions/51778474
复制相似问题