BitmapFactory.decodeStream() 正在未经互联网许可工作
BitmapFactory.decodeStream() is working without INTERNET PERMISSION
我应该从 Internet 获取图像并将其显示在我的 activity.For 上,我正在使用 asynctask class.I 忘记在我的清单文件中提及 INTERNET 权限并且应用程序是 运行 成功,没有任何异常,并且能够在模拟器上获取所有图像。
在设备上显示网络错误。
我的问题是为什么模拟器表现得像 this.I 我正在使用 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();
}
}
}
}
而且我没有在我的清单文件中提到 INTERNET 权限。
免责声明:我在 Genymotion 工作。
答案是这是一个 Genymotion 错误。 :(
Android API 合规性对于 Genymotion 来说绝对是基础。
请接受我们对您为此浪费的时间表示歉意。
我们立即调查并修复了这个错误。
您将在我们的下一个版本中得到修复。
该问题仅发生在版本 2.3.7、4.1.1 和 4.2.2 上。
我应该从 Internet 获取图像并将其显示在我的 activity.For 上,我正在使用 asynctask class.I 忘记在我的清单文件中提及 INTERNET 权限并且应用程序是 运行 成功,没有任何异常,并且能够在模拟器上获取所有图像。 在设备上显示网络错误。 我的问题是为什么模拟器表现得像 this.I 我正在使用 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();
}
}
}
}
而且我没有在我的清单文件中提到 INTERNET 权限。
免责声明:我在 Genymotion 工作。
答案是这是一个 Genymotion 错误。 :(
Android API 合规性对于 Genymotion 来说绝对是基础。
请接受我们对您为此浪费的时间表示歉意。
我们立即调查并修复了这个错误。
您将在我们的下一个版本中得到修复。
该问题仅发生在版本 2.3.7、4.1.1 和 4.2.2 上。