Я разрабатываю <новостное приложение, и мне нужно последовательно отображать изображения и текст в Textview.<a href="https://metbuat.az/news/957814/mediada-tesadufi-adamlar-coxdur.html" rel="nofollow noreferrer"> Это точные новости, которые я хочу отображать в приложении.
Итак, я написал следующий код:
public class NewsActivity extends AppCompatActivity implements FeedAdapter.OnItemClickListener, Html.ImageGetter
{
TextView textViewBody;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news);
textViewBody = findViewById(R.id.textview_newsBody);
Intent intent = getIntent();
String body = intent.getStringExtra(EXTRA_BODY);
body = body.replace("<", "<").replace(">", ">");
Spanned spanned = Html.fromHtml(body, this, null);
textViewBody.setText(spanned);
}
@Override
public Drawable getDrawable(String source)
{
LevelListDrawable drawable = new LevelListDrawable();
Drawable empty = getResources().getDrawable(R.drawable.ic_arxiv);
drawable.addLevel(0, 0, empty);
drawable.setBounds(0,0,empty.getIntrinsicWidth(), empty.getIntrinsicHeight());
new LoadImage().execute(source, drawable);
return drawable;
}
class LoadImage extends AsyncTask<Object, Void, Bitmap>
{
private LevelListDrawable mDrawable;
@Override
protected Bitmap doInBackground(Object... params) {
String source = (String) params[0];
mDrawable = (LevelListDrawable) params[1];
Log.d(TAG, "doInBackground " + source);
try {
InputStream is = new URL(source).openStream();
return BitmapFactory.decodeStream(is);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Bitmap bitmap)
{
Log.d(TAG, "onPostExecute drawable " + mDrawable);
Log.d(TAG, "onPostExecute bitmap " + bitmap);
if (bitmap != null) {
BitmapDrawable d = new BitmapDrawable(getApplicationContext().getResources(), bitmap);
mDrawable.addLevel(1, 1, d);
mDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
mDrawable.setLevel(1);
// i don't know yet a better way to refresh TextView
// mTv.invalidate() doesn't work as expected
CharSequence t = textViewBody.getText();
textViewBody.setText(t);
textViewBody.refreshDrawableState();
}
}
}
Я получаю исключение MalformedURLEx для каждого изображения при попытке открыть эту новость:
W/System.err: java.net.MalformedURLException: Protocol not found: "https://metbuat.az/uploads/295/7f54088035-img6105.jpg"
Если я копирую-вставляюURL к браузеру в порядке и протокол уже предоставлен.
Почему я все еще получаю это исключение?