Android app调用第三方打开文件时,如何避免qq发送的调用

程序猿tx 2015-09-29 11:23:43
打开文件的类:
public class OpenDocuments {
public static Intent openFile(File file){
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//设置intent的Action属性
intent.setAction(Intent.ACTION_VIEW);
//获取文件file的MIME类型
String type = getMIMEType(file);
//设置intent的data和Type属性。
intent.setDataAndType(Uri.fromFile(file), type);
return intent;
}
/**
* 根据文件后缀名获得对应的MIME类型。
* @param file
*/
private static String getMIMEType(File file) {
String type="*/*";
String fName = file.getName();
//获取后缀名前的分隔符"."在fName中的位置。
int dotIndex = fName.lastIndexOf(".");
if(dotIndex < 0){
return type;
}
/* 获取文件的后缀名*/
String end=fName.substring(dotIndex,fName.length()).toLowerCase();
if(end=="")return type;
//在MIME和文件类型的匹配表中找到对应的MIME类型。
for(int i=0;i<MIME_MapTable.length;i++){ //MIME_MapTable??在这里你一定有疑问,这个MIME_MapTable是什么?
if(end.equals(MIME_MapTable[i][0]))
type = MIME_MapTable[i][1];
}
return type;
}
//MIME_MapTable是所有文件的后缀名所对应的MIME类型的一个String数组
private static final String[][] MIME_MapTable = {.....各种mime类型}
}

打开文件的方法
private boolean openDocs(String path) {
File file = new File(path);
if (file == null || !file.exists()) {
return false;
} else {
Intent intent = OpenDocuments.openFile(file);
try {
getActivity().startActivity(intent);
} catch (ActivityNotFoundException e) {
e.printStackTrace();
return false;
}
}
return true;
}
调用openDocs方法打开文件会调用到qq的发送的接口,求问怎么避免qq发送,只想用其他类似wps的工具打开,不需要提示中出现发送qq
...全文
294 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jklwan 2015-09-29
  • 打赏
  • 举报
回复
参考以下

        String type = getMIMEType(file);
        Intent it = new Intent(Intent.ACTION_VIEW);
        it.setDataAndType(Uri.fromFile(Uri.fromFile(file), type);
        List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(it, 0);
        if (!resInfo.isEmpty()) {
            List<Intent> targetedShareIntents = new ArrayList<Intent>();
            for (ResolveInfo info : resInfo) {
                Intent targeted = new Intent(Intent.ACTION_VIEW);
                targeted.setDataAndType(Uri.fromFile(file), type);
                ActivityInfo activityInfo = info.activityInfo;
                // judgments : activityInfo.packageName, activityInfo.name, etc.
                if (activityInfo.packageName.contains("com.tencent.mobileqq")) {
                    continue;
                }
                targeted.setPackage(activityInfo.packageName);
                targetedShareIntents.add(targeted);
            }
            if (targetedShareIntents.size()!=0){
                Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Select app to Open");
                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
                startActivity(chooserIntent);
            }else {
                Toast.makeText(FourActivity.this, "没有可选程序", Toast.LENGTH_SHORT).show();
            }
        }

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧