我有一个问题,如果你了解的话,希望你能帮助我。就是一种文件的默认打开方式的问题,比如原来只有google自带浏览器的时候,只能用自带浏览器打开网页,如果装了uc,我们就可以选择用哪个浏览器来打开网页,我想通过程序修改这个默认设置,比如我设计了一个浏览器,然后再安装后让用户把它设置为默认浏览器,不过我后来发现在android这个权限是很高的,是要系统权限,要跟系统有一样的签名,这样对第三方软件就没有意义了可是我近来发现uc里面竟然就带有这个功能,而且不需要那么大的权限。uc是如何实现的呢?你能给我一点提示吗?
解决方案 »
- 想把SD卡以树形结构显示要怎么做啊? 是把我下列的程序和Tree结合吗? 如果是结合要怎么做啊
- 写了一个Activity之间跳转的程序,但是跳转时出错,谁帮忙看看吧~小女子感激不尽。
- 小弟的学习计划,大神们指导下···
- 2.3的AlarmClock
- nofication上面的文字通知可以滚动起来吗??
- 新手求助一个关于线程间的问题
- android 蓝牙 大文件引入并传输 引入和传输急续具体代码
- 聊天界面listview中要如何保持含有进度条的item??
- total control 和 adb的 问题,一百分拿走
- 毕业设计的两个知识点不会,求助大佬
- progressbar 怎么 不会动态刷新进度??
- 求推荐几个开源的游戏,认真学习学习
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);