网友通过本文主要向大家介绍了android5.0,android5.0新特性,android5.0系统下载,android5.0模拟器,android5.0系统手机等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Android5.0开发范例大全 读书笔记(四),android5.0范例
(三)通信和联网
3.1显示Web信息
1.WebView通过loadUrl()方法直接访问网页时,点击跳转链接会打开系统默认的浏览器,若要拦截WebView事件,可为其添加WebViewClient
webView.setWebViewClient(new WebViewClient())
2.WebView默认不支持JavaScript,要通过setJavaScriptEnabled()进行设置
webView.getSettings().setJavaScriptEnabled(true);
3.WebView可以直接显示Html内容
3.4下载图片文件
1.自定义一个ImageView控件,实现资源的下载与显示
值得一提的是,设置本地资源应该提供2个方法,一个通过资源id获取,一个通过drawable获取
网络下载可以通过asynctask实现,要注意不要在doInBackground()中更新UI线程
下面附上完整代码
public class WebImageView extends ImageView { private Drawable mPlaceholder, mImage; public WebImageView(Context context) { this(context, null); } public WebImageView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public WebImageView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public void setPlaceholderImage(Drawable drawable) { mPlaceholder = drawable; if (mImage == null) { setImageDrawable(mPlaceholder); } } public void setPlaceholderImage(int resid) { mPlaceholder = getResources().getDrawable(resid); System.out.println(1); if (mImage == null) { System.out.println(2); setImageDrawable(mPlaceholder); } } public void setImageUrl(String url) { DownloadTask task = new DownloadTask(); task.execute(url); } private class DownloadTask extends AsyncTask<String, Void, Bitmap> { @Override protected Bitmap doInBackground(String... params) { String url = params[0]; try { URLConnection connection = (new URL(url)).openConnection(); InputStream is = connection.getInputStream(); return BitmapFactory.decodeStream(is); } catch (IOException e) { e.printStackTrace(); return null; } } @Override protected void onPostExecute(Bitmap bitmap) { mImage = new BitmapDrawable(getContext().getResources(), bitmap); setImageDrawable(mImage); } } }
3.5完全在后台下载
1.DownloadManager适合处理和管理需要长时间运行的下载操作。其优点是即使在下载失败,链接改变甚至设备重启时,依然会继续尝试下载
2.首先实现一个广播接收者来监听下载状态
private BroadcastReceiver receiver=new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { queryDownloadStatus(); } }; private void queryDownloadStatus(){ DownloadManager.Query query=new DownloadManager.Query(); query.setFilterById(prefs.getLong(DL_ID,0)); Cursor c=dm.query(query); if(c.moveToFirst()){ int status=c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS)); switch (status){ case DownloadManager.STATUS_PAUSED: case DownloadManager.STATUS_PENDING: case DownloadManager.STATUS_RUNNING: break; case DownloadManager.STATUS_SUCCESSFUL: try { ParcelFileDescriptor file=dm.openDownloadedFile(prefs.getLong(DL_ID,0)); FileInputStream fis=new ParcelFileDescriptor.AutoCloseInputStream(file); imageView.setImageBitmap(BitmapFactory.decodeStream(fis)); Toast.makeText(this,"download over!",Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { e.printStackTrace(); } break; case DownloadManager.STATUS_FAILED: dm.remove(prefs.getLong(DL_ID, 0)); prefs.edit().clear().apply(); break; } } }
3.接着获取系统服务
dm= (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
4.最后,在onResume中注册广播并开始下载
@Override protected void onResume() { super.onResume(); if(!prefs.contains(DL_ID)){ Uri resource=Uri.parse("http://f2.market.xiaomi.com/download/AppChannel/0965d34f016634cb83347f609306d9a3fa045a9c5/com.netease.onmyoji.mi.apk"); DownloadManager.Request request=new DownloadManager.Request(resource); request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE| DownloadManager.Request.NETWORK_WIFI); request.setTitle("Download Sample"); request.setDescription("Download SSR!"); request.setAllowedOverRoaming(false); long id=dm.enqueue(request); prefs.edit().putLong(DL_ID,id).apply(); }else{ queryDownloadStatus(); } registerReceiver(receiver,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); }
3.10发送短信
1.与之前的DownloadManager一样,发送短信的SmsManager也是系统级服务,二者的调用极为相似
2..首先实现广播接收者,发送短信一共有2个接受者,一个返回发送是否成功
private BroadcastReceiver sent = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(SendSmsActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
您可能想查找下面的文章:
- Android 5.0(包含5.0以下版本) 获取栈顶应用程序包名,android包名
- Android5.0开发范例大全 读书笔记(五),android5.0范例
- Android5.0开发范例大全 读书笔记(六),android5.0范例
- Android5.0开发范例大全 读书笔记(三),android5.0范例
- Android5.0开发范例大全 读书笔记(四),android5.0范例
- android 5.0后对于apk 跑32 64 的逻辑
- Android 5.0 Settings源码简要分析
- Android5.0新特性-Material Design
- Android5.0之Toobar的使用
- Android 6.0 系统棉花糖新的特性和功能