我有一个问题,如果你了解的话,希望你能帮助我。就是一种文件的默认打开方式的问题,比如原来只有google自带浏览器的时候,只能用自带浏览器打开网页,如果装了uc,我们就可以选择用哪个浏览器来打开网页,我想通过程序修改这个默认设置,比如我设计了一个浏览器,然后再安装后让用户把它设置为默认浏览器,不过我后来发现在android这个权限是很高的,是要系统权限,要跟系统有一样的签名,这样对第三方软件就没有意义了可是我近来发现uc里面竟然就带有这个功能,而且不需要那么大的权限。uc是如何实现的呢?你能给我一点提示吗?

解决方案 »

  1.   

    之前写过的 很就没用了 不知道还有没有用 你试下
    PackageManager packageManager = context.getPackageManager();
    String str1 = "android.intent.category.DEFAULT";
    String str2 = "android.intent.category.BROWSABLE";
    String str3 = "android.intent.action.VIEW";

    //设置默认项的必须参数之一,用户的操作符合该过滤器时,默认设置起效
    IntentFilter filter = new IntentFilter(str3);
    filter.addCategory(str1);
    filter.addCategory(str2);
    filter.addDataScheme("http");
    //设置浏览页面用的Activity
    ComponentName component = new ComponentName(context
    .getPackageName(), BrowserActivity.class.getName());

    Intent intent = new Intent(str3);
    intent.addCategory(str2);
    intent.addCategory(str1);
    Uri uri = Uri.parse("http://");
    intent.setDataAndType(uri, null);

    //找出手机当前安装的所有浏览器程序
    List<ResolveInfo> resolveInfoList = packageManager
    .queryIntentActivities(intent,
    PackageManager.GET_INTENT_FILTERS);

    int size = resolveInfoList.size();
    ComponentName[] arrayOfComponentName = new ComponentName[size];
    for (int i = 0; i < size; i++)
    {
    ActivityInfo activityInfo = resolveInfoList.get(i).activityInfo;
    String packageName = activityInfo.packageName;
    String className = activityInfo.name;
    //清除之前的默认设置
    packageManager.clearPackagePreferredActivities(packageName);
    ComponentName componentName = new ComponentName(packageName,
    className);
    arrayOfComponentName[i] = componentName;
    }
    packageManager.addPreferredActivity(filter,
    IntentFilter.MATCH_CATEGORY_SCHEME, arrayOfComponentName,
    component);
      

  2.   

    今天发现新的uc7.8那个功能又没有了uc7.7好像有那个功能,那即使重启后又没有了。那这个功能是如何实现的呢?