gpt4 book ai didi

java - BitmapFactory.decodeStream() 无需互联网许可即可工作

转载 作者:行者123 更新时间:2023-12-01 11:50:18 25 4
gpt4 key购买 nike

我应该从互联网获取图像并将其显示在我的 Activity 中。为此,我使用 asynctask 类。我忘记在我的 list 文件中提及互联网权限,并且应用程序成功运行,没有给出任何异常,并且能够获取模拟器上的所有图像。在设备上显示网络错误。我的问题是为什么模拟器会出现这样的行为。我正在使用 genymotion 模拟器 (Google Nexus 4)

代码如下:-

 public class MainActivity extends ActionBarActivity implements View.OnClickListener {


Button btnClick = null;
Button btnClick2 = null;
Context context = MainActivity.this;
ImageView imageview = null;
ProgressBar progressBar;

String URL = "http://images.visitcanberra.com.au/images/canberra_hero_image.jpg";
String URLTiger = "http://www.hdwallpapersimages.com/wp-content/uploads/2014/01/Winter-Tiger-Wild-Cat-Images.jpg";
String URLTree = "http://blog.jimdo.com/wp-content/uploads/2014/01/tree-247122.jpg";
String URLSky = "http://www.ucl.ac.uk/news/news-articles/1213/muscle-fibres-heart.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnClick = (Button) findViewById(R.id.btnClick);
btnClick2 = (Button)findViewById(R.id.btnClick2);
imageview = (ImageView)findViewById(R.id.imageview);

progressBar = (ProgressBar)findViewById(R.id.progressbar);

progressBar.setVisibility(ProgressBar.GONE);

}




@Override
public void onClick(View v) {

switch(v.getId())
{
case R.id.btnClick:
new ImageDownloader(this).execute("http://stylonica.com /wp-content/uploads/2014/02/nature.jpg");
new ImageDownloader(this).execute(URLTiger);
new ImageDownloader(this).execute(URLTree);
new ImageDownloader(this).execute(URLSky);
break;
case R.id.btnClick2:
new Thread(new Runnable() {
@Override
public void run() {
btnClick2.post(new Runnable() {
@Override
public void run() {
btnClick2.setText("Thread B");
}
});

}
}).start();
break;

}
}
public class ImageDownloader extends AsyncTask<String,String,Bitmap> {

ProgressDialog progressDialog;
Context context;
Bitmap bitmap;


public ImageDownloader(Context context) {
this.context = context;
}

@Override
protected void onPreExecute() {
// progressDialog = ProgressDialog.show(context,"Loading Image ","Please wait....");

progressBar.setVisibility(ProgressBar.VISIBLE);
}

@Override
protected Bitmap doInBackground(String... args) {
try {
Log.d("new URL(args[0]..............", new URL(args[0]) + "");
bitmap = BitmapFactory.decodeStream((InputStream) new URL(args[0]).getContent());
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}

@Override
protected void onPostExecute(Bitmap image) {
if(image != null){
imageview.setImageBitmap(image);
// progressDialog.dismiss();
progressBar.setVisibility(ProgressBar.INVISIBLE);
}else{
// progressDialog.dismiss();
progressBar.setVisibility(ProgressBar.INVISIBLE);
Toast.makeText(context, "Image Does Not exist or Network Error", Toast.LENGTH_SHORT).show();
}
}
}

}

而且我没有在 list 文件中提及 INTERNET 权限。

最佳答案

免责声明:我在 Genymotion 工作。

答案是这是一个 Genymotion 错误。 :(

Android API 合规性对于 Genymotion 来说绝对是基础。
对于您因此损失的时间,请接受我们的歉意。我们立即调查了这个错误并修复了它。
您将在我们的下一个版本中修复此问题。
该问题仅发生在2.3.7、4.1.1和4.2.2版本上。

关于java - BitmapFactory.decodeStream() 无需互联网许可即可工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28849643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com