仿uc设置默认浏览器

仿照uc实现设置默认浏览器的方式:

实现思路:

Ucà设置->设置->设置为默认浏览器。

如果系统没有默认浏览器,就弹出“去设置”,然后再已经安装的所有浏览器中选择一项作为默认,以后点击url链接,都是调用系统默认浏览器。

如果系统已经设置了默认浏览器,就弹出“去清除”,然后在弹出的应用程序详细信息中,清除默认设置。将自己的程序设置为默认浏览器。

1)  设置自己的程序能够被外部连接检测到。在启动activity中追加:intent-filter.

<activity
            android:name=".LoginActivity"
            android:label="@string/app_name" 
            android:launchMode="singleTask"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
<intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="http" />
                <data android:scheme="https" />
                <data android:scheme="about" />
                <data android:scheme="javascript" />
  </intent-filter>

         </activity>        

2) 代码中进行判断

public void setDefautBrawser()
    { 
	 
				PackageManager packageManager = LoginActivity.this.getPackageManager();
				Uri  uri = Uri.parse("http://www.baidu.com");
		 		Intent  intent = new  Intent(Intent.ACTION_VIEW, uri);
		 		String[] packageNames;
	          //找出手机当前安装的所有浏览器程序
			   	 List<ResolveInfo> resolveInfoList = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 
			   	 int size = resolveInfoList.size();	 
			   	 packageNames=new String[size];
			   	 for (int i = 0; i < size; i++)
			   	 {
				   	 ActivityInfo activityInfo = resolveInfoList.get(i).activityInfo;
				   	 String packageName = activityInfo.packageName;
	                 String className = activityInfo.name;
	                 Log.v("xx", "packagename:"+packageName+"className:"+className);
	                 packageNames[i]=packageName;
			   	 }
			   	 
		   	 //找出手机当前安装的特定浏览器程序
			   	
			   	 ResolveInfo resolveInfo= packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
	            if( resolveInfo != null) {
	                // someone knows how to handle this mime type with this scheme, don't download.
	                try {
	               	 ActivityInfo activityInfo = resolveInfo.activityInfo;
	    		   	 String packageName = activityInfo.packageName; 
	    		   	 
	    		   
	    		     int x= packageManager.getApplicationEnabledSetting(packageName);
	    		   	 boolean flag=false;
	    		   	 for(int i=0;i<size;i++)
	    		   	 {
	    		   		 if(packageName.equals(packageNames[i]))
	    		   		 {
	    		   			 //if has setting info,
	    		   			 int pirority=resolveInfo.priority;
	    		   			 if(resolveInfo.isDefault || pirority==0)
	    		   			 {
	    		   				// flag=true;
	    		   			 }	 
	    		   			
	    		   		 }
	    		   	 }
	    		   	 //have not default setting braswer
	    		   	 if(flag==false)
	    		   	 {
	    		   		setDefault.setText("去设置");
	    		   		startActivity(intent);
	    		   	 }else
	    		   	 {
	    		   		setDefault.setText("去清除");
	    		   		showInstalledAppDetails(this,packageName);
	    		   	 }
	                    return;
	                } catch (ActivityNotFoundException ex) {
	                        Log.d("", "activity not found f" +
	                        		"or " + Uri.parse("http://www.baidu.com").getScheme(), ex);                   
	                }
	            }
            
            //找出所有的浏览
    }

3)

如果找到已经设置的默认浏览器,那么就弹出此浏览器的设置界面,让用户手工删除。

	public static void showInstalledAppDetails(Context context, String packageName) {
		Intent intent = new Intent();
		final int apiLevel = Build.VERSION.SDK_INT;
		if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的接口
			intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
			Uri uri = Uri.fromParts(SCHEME, packageName, null);
			intent.setData(uri);
		} else { // 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)
			// 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。
			final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22
					: APP_PKG_NAME_21);
			intent.setAction(Intent.ACTION_VIEW);
			intent.setClassName(APP_DETAILS_PACKAGE_NAME,
					APP_DETAILS_CLASS_NAME);
			intent.putExtra(appPkgName, packageName);
		}
		context.startActivity(intent);
	}

源代码下载路径:

http://download.csdn.net/detail/self_discipline1/7677617





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值