Android 使用 AsyncTask 下载图片并从 EditText 获取工作 ID
public void dow_imgone(final View view) {
new AsyncTask<Void, Void, String>() {
protected String doInBackground(Void... voids) {
OkHttpClient client = new OkHttpClient();
EditText editText = findViewById(R.id.edit_text);
String inputText = editText.getText().toString();
String url = 'https://app.huashijie.art/api/work/detailV2?visitorId=-1&workId=' + inputText + '&cur_user_id=-1&platform=android&os_version=28&version_code=217&device_brand=vivo&device_model=vivo%20X21&token=&channel=vivo';
Request request = new Request.Builder()
.url(url)
.build();
try {
Response response = client.newCall(request).execute();
String responseBody = response.body().string();
JsonParser parser = new JsonParser();
JsonObject json = parser.parse(responseBody).getAsJsonObject();
String imageUrl = json.get('data').getAsJsonObject().get('multiImages').getAsJsonArray().get(0).getAsJsonObject().get('imgPath').getAsString();
if (imageUrl != null && imageUrl.matches('http://bsyimg\.pandapaint\.net/v2/work_cover/user/[0-9]+/[0-9]+\.jpg')) {
downloadImage(imageUrl);
return '下载成功';
} else {
return '未能提取到图片地址';
}
} catch (IOException e) {
e.printStackTrace();
return '下载失败';
}
}
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
}
}.execute();
}
该代码首先获取 EditText 中的文本内容,并将其拼接到 API URL 中的 workId 参数。然后,使用 OkHttpClient 发送请求,解析响应结果,获取图片地址,并调用 downloadImage 方法下载图片。最后,通过 Toast 显示下载结果。
代码亮点:
- 使用 AsyncTask 在后台线程中进行网络请求,避免阻塞主线程。
- 从 EditText 获取用户输入的工作 ID,实现更加灵活的图片下载功能。
- 使用正则表达式验证图片地址是否符合预期格式。
- 通过 Toast 显示下载结果,方便用户了解操作结果。
使用说明:
- 在布局文件中添加一个 EditText 和一个 Button。
- 将 EditText 的 ID 设置为
edit_text。 - 将 Button 的点击事件绑定到 dow_imgone 方法。
- 运行程序,在 EditText 中输入工作 ID,点击 Button 下载图片。
注意:
- 该代码仅演示了基本功能,需要根据实际情况进行调整。
- 请确保
downloadImage方法已经实现,用于下载图片。 - 请确保应用已获得网络访问权限。
- 请注意代码中的 URL 地址,确保其指向正确的 API 接口。
代码示例:
public void downloadImage(String imageUrl) {
// 下载图片代码
}
更多信息:
希望该示例能够帮助您更好地理解如何在 Android 应用中使用 AsyncTask 下载图片并从 EditText 获取工作 ID。如有疑问,请随时提出。
原文地址: https://www.cveoy.top/t/topic/inNV 著作权归作者所有。请勿转载和采集!