Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 438|回复: 0

开发交流:[Android实例] 浏览器选择框的菜鸟级制作过程【能

[复制链接]

该用户从未签到

发表于 2011-10-24 10:32:53 | 显示全部楼层 |阅读模式
在一个android小应用开发过程当中,免不了要调用浏览器,或者指定某个网页必须调用某个浏览器的情况,由于是新手,不知道有没有这种函数已经可以直接调用,在时间的压逼下,只能自己想办法,当然,最原始的方法就是用网上半成熟的代码,完成自己想要的功能,我暂时要的是结果,而不是过程。我要实现的效果是点击小应用里的某个按钮,然后弹出一个浏览器选择框,选中那一个浏览器类型,就指定那一个浏览器对某个网址进行打开.

代码实现的效果如下:


实现的代码如下,由于本人真机环境的原因,部分浏览器还没有经过测试:

引用文件:
import android.content.pm.PackageInfo;      
import android.content.pm.PackageManager;
import java.util.Arrays;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.app.AlertDialog;

具体实现代码:
        private String ucPath = "", operaPath = "", qqPath = "", dolphinPath = "", skyfirePath = "", steelPath = "", GooglePath = "";        
        boolean existUC = false, existOpera = false, existQQ = false, existDolphin = false, existSkyfire = false, existSteel = false, existGoogle = false;
               
private String url = "";
private int mSingleChoiceID = 0;

//要访问的网址
private String visitUrl = "http://www.XXXXXXX.com";
url = visitUrl;
//-------------------------------浏览器选择框完整代码-----------------------------------------------
        private void choiceBrowserToVisitUrl() {                                 
                PackageManager packageMgr = getPackageManager();      
        List&ltackageInfo> list = packageMgr.getInstalledPackages(0);
        
        //先定义一个浏览器,后面动态创建浏览器数组的个数
        String[] A = new String[1];
               
        int iCount = 1;//记录浏览器个数

        A = (String[])resizeArray(A,iCount);         
        A[iCount-1] = "默认浏览器";
        
        for (int i = 0; i < list.size(); i++) {      
            PackageInfo info = list.get(i);      
            String temp = info.packageName;      
            if (temp.equals("com.uc.browser")) {      
                // 存在UC      
                ucPath = temp;
                iCount = iCount + 1;
                A = (String[])resizeArray(A,iCount);         
                A[iCount-1] = "UC浏览器";               
     
            } else if (temp.equals("com.tencent.mtt")) {      
                // 存在QQ      
                qqPath = temp;
                iCount = iCount + 1;
                A = (String[])resizeArray(A,iCount);         
                A[iCount-1] = "QQ浏览器";      
            } else if (temp.equals("com.opera.mini.android")) {      
                // 存在Opera      
                operaPath = temp;
                iCount = iCount + 1;
                A = (String[])resizeArray(A,iCount);         
                A[iCount-1] = "OPERA浏览器";     
            } else if (temp.equals("mobi.mgeek.TunnyBrowser")) {      
                dolphinPath = temp;  
                iCount = iCount + 1;
                A = (String[])resizeArray(A,iCount);         
                A[iCount-1] = "DOLPHIN浏览器";      
            } else if (temp.equals("com.skyfire.browser")) {      
                skyfirePath = temp;
                iCount = iCount + 1;
                A = (String[])resizeArray(A,iCount);         
                A[iCount-1] = "SKYFIRE浏览器";      
            } else if (temp.equals("com.kolbysoft.steel")) {      
                steelPath = temp;      
                iCount = iCount + 1;
                A = (String[])resizeArray(A,iCount);         
                A[iCount-1] = "STEEL浏览器";      
            } else if (temp.equals("com.android.browser")) {      
                // 存在GoogleBroser      
                googlePath = temp;  
                iCount = iCount + 1;
                A = (String[])resizeArray(A,iCount);         
                A[iCount-1] = "Google浏览器";   
            }
        }  
        
        final String[] B = new String[iCount];
        
        System.arraycopy(A, 0, B, 0, iCount);
        
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);        
        
               
        builder.setTitle("选择浏览器");
        
        builder.setSingleChoiceItems(A, 0, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                        mSingleChoiceID = whichButton;                        
                        }
                });
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton)
                {
                        if (B[mSingleChoiceID].equals("UC浏览器"))
                        {
                    existUC = true;
                    doShowBrowse();                                                   
                        }
                        else if (B[mSingleChoiceID].equals("QQ浏览器"))
                        {
                    existQQ = true;
                    doShowBrowse();
                        }
                        else if (B[mSingleChoiceID].equals("OPERA浏览器"))
                        {
                    existOpera = true;
                    doShowBrowse();
                        }
                        else if (B[mSingleChoiceID].equals("DOLPHIN浏览器"))
                        {
                    existDolphin = true;
                    doShowBrowse();
                        }
                        else if (B[mSingleChoiceID].equals("SKYFIRE浏览器"))
                        {
                    existSkyfire = true;
                    doShowBrowse();
                        }
                        else if (B[mSingleChoiceID].equals("TEEL浏览器"))
                        {
                    existSteel = true;
                    doShowBrowse();
                        }
                        else if (B[mSingleChoiceID].equals("Google浏览器"))
                        {
                    existGoogle = true;
                    doShowBrowse();
                        }                                      
            }
        });
        
        builder.create().show();               
    }      

        private void doShowBrowse(){
        // 单击事件对象的实例
                PackageManager packageMgr1 = getPackageManager();
        if (existUC) {                  
            gotoUrl(ucPath, url, packageMgr1);      
        } else if (existOpera) {      
            gotoUrl(operaPath, url, packageMgr1);      
        } else if (existQQ) {      
            gotoUrl(qqPath, url, packageMgr1);      
        } else if (existDolphin) {      
            gotoUrl(dolphinPath, url, packageMgr1);      
        } else if (existSkyfire) {      
            gotoUrl(skyfirePath, url, packageMgr1);      
        } else if (existSteel) {      
            gotoUrl(steelPath, url, packageMgr1);      
        } else if (existGoogle) {      
            gotoUrl(googlePath, url, packageMgr1);      
        } else {      
            doDefault();      
        }        
        }
        /**  * Reallocates an array with a new size, and copies the contents   
         * * of the old array to the new array.   
         * * @param oldArray  the old array, to be reallocated.   
         * * @param newSize   the new array size.   
         * * @return          A new array with the same contents.   
         * */   
        private static Object resizeArray (Object oldArray, int newSize) {         
            int oldSize = java.lang.reflect.Array.getLength(oldArray);         
            Class elementType = oldArray.getClass().getComponentType();         
            Object newArray = java.lang.reflect.Array.newInstance(              
                    elementType,newSize);         
            int preserveLength = Math.min(oldSize,newSize);         
            if (preserveLength > 0)            
                System.arraycopy (oldArray,0,newArray,0,preserveLength);         
            return newArray;   }         
        // Test routine for resizeArray
        
        private void gotoUrl(String packageName, String url,      
            PackageManager packageMgr) {      
        try {      
            Intent intent;      
            intent = packageMgr.getLaunchIntentForPackage(packageName);      
            intent.setAction(Intent.ACTION_VIEW);      
            intent.addCategory(Intent.CATEGORY_DEFAULT);      
            intent.setData(Uri.parse(url));      
            startActivity(intent);      
        } catch (Exception e) {      
              
            e.printStackTrace();      
        }      
    }      
    private void doDefault() {      
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(visitUrl));      
        startActivity(intent);      
    }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 05:40 , Processed in 0.365223 second(s), 48 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表