• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android5.0开发范例大全 读书笔记(四),android5.0范例

Android5.0开发范例大全 读书笔记(四),android5.0范例

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了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();
                    


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 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 系统棉花糖新的特性和功能

相关文章

  • 2017-05-26[Android] Activity间切换,传递数据,androidactivity
  • 2017-05-26Android React-Native系列之(一)零基础搭建React-Native开发环境
  • 2017-05-26Mac Android studio提交本地项目到Github 已经配置 SSH KEY
  • 2017-05-222.4.1 ScrollView(滚动条)
  • 2017-05-26Android安全攻防战,反编译与混淆技术完全解析(下)
  • 2017-05-26listview的ViewHolder优化,listviewviewholder
  • 2017-05-26阿里巴巴开源Weex 开发教程,开源weex
  • 2017-05-26[Android]Android布局优化之&lt;include /&gt;,androidinclude
  • 2017-05-26Loader详解,asynctaskloader详解
  • 2017-05-26看Facebook是如何优化React Native性能,facebookreact

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android Couldn&#39;t load BaiduMapSDK,androidbaidumapsdk
    • SQLite 在 Android 的应用,sqliteandroid应用
    • Android中的 Multiple dex files define 编译错误引发的思考
    • Android--实现ViewPager边界回弹效果(转),android--viewpager
    • 安卓开源项目周报0117,安卓开源项目0117
    • 安卓的主要几大布局,安卓布局
    • 基于Pacemaker的PostgreSQL一主多从读负载均衡集群搭建
    • Android,androidstudio
    • Android Studio 2.0下创建jni应用调用本地C函数
    • Android 事件分发

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有