• 保存到桌面  加入收藏  设为首页
安卓应用

安卓-代码--打开和分享(发送到)本地文件

时间:2016-10-18 12:40:44   作者:胜行天下   来源:胜行天下   阅读:547   评论:0

打开不同类型的文件
http://codego.net/588405/ 文件管理
http://android.tgbus.com/Android/tutorial/201204/422728.shtml
http://dengzhangtao.iteye.com/blog/1946941
http://blog.csdn.net/yuxiaohui78/article/details/8232402

    查看(打开)
    /**
     * 方法说明:用法 startActivity(Utils.openFile(savePath, "*"));
     * 
     * @author Aotu-JS ,email: dev@jiangjiesheng.cn
     * @version 创建时间:2016年6月22日 下午6:33:29
     * 
     * @param localFilePath
     * @return
     */
    public static Intent openFile(String localFilePath, String fileType) {

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.addCategory("android.intent.category.DEFAULT");

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        Uri uri = Uri.fromFile(new File(localFilePath));

        String lowerCasePath = localFilePath.toLowerCase();
        // intent.setDataAndType(uri, "application/" + fileType);// msword

        if (lowerCasePath.endsWith(".jpg") || lowerCasePath.endsWith(".png")
                || lowerCasePath.endsWith(".jpeg"))
            fileType = "image/*";
        else if (lowerCasePath.endsWith(".doc")
                || lowerCasePath.endsWith(".docx"))
            fileType = "application/msword";
        else if (lowerCasePath.endsWith(".pdf"))
            fileType = "application/pdf";
        else if (lowerCasePath.endsWith(".xls")
                || lowerCasePath.endsWith(".xlsx"))
            fileType = "application/vnd.ms-excel";
        else
            fileType = "application/*";
        intent.setDataAndType(uri, fileType);// msword
        return intent;
    }

    /**
     * 方法说明:(通过第三方软件)发送到(分享到)
     * 
     * @author Aotu-JS ,email: dev@jiangjiesheng.cn
     * @version 创建时间:2016年6月23日 下午1:45:57
     * 
     * @param context
     * @param activityTitle
     * @param msgTitle
     * @param msgText
     * @param filePath
     */
    public static void shareFileTo(Activity act, String activityTitle,
            String msgTitle, String msgText, String filePath) {
if (null == act) {
return;
}
        Intent intent = new Intent(Intent.ACTION_SEND);
        if (filePath == null || filePath.equals("")) {
            intent.setType("text/plain"); // 纯文本
        } else {
            File f = new File(filePath);
            if (f != null && f.exists() && f.isFile()) {
                String fileType;
                String lowerCasePath = filePath.toLowerCase();
                if (lowerCasePath.endsWith(".jpg")
                        || lowerCasePath.endsWith(".png")
                        || lowerCasePath.endsWith(".jpeg"))
                    fileType = "image/*";
                else if (lowerCasePath.endsWith(".doc")
                        || lowerCasePath.endsWith(".docx"))
                    fileType = "application/msword";
                else if (lowerCasePath.endsWith(".pdf"))
                    fileType = "application/pdf";
                else if (lowerCasePath.endsWith(".xls")
                        || lowerCasePath.endsWith(".xlsx"))
                    fileType = "application/vnd.ms-excel";
                else
                    fileType = "application/*";
                intent.setType(fileType);
                Uri u = Uri.fromFile(f);
                intent.putExtra(Intent.EXTRA_STREAM, u);
            }
        }
        intent.putExtra(Intent.EXTRA_SUBJECT, msgTitle);
     
        ArrayList<String> extra_text = new ArrayList<String>();
        extra_text.add(msgText);
        intent.putStringArrayListExtra(android.content.Intent.EXTRA_TEXT, extra_text);
        //intent.putExtra(Intent.EXTRA_TEXT, msgText);//170406-js-会有警告 4.x系统的bug,
        //使用putStringArrayListExtra代替


        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);//解决第二次分享到qq失败
        act.startActivity(Intent.createChooser(intent, activityTitle));
    }

   


/**
     * 方法说明:(通过第三方软件)发送到(分享到) 支持多个文件
     * @author 江节胜 ,E-mail:dev@jiangjiesheng.cn
     * @version 创建时间:2017-4-1 下午4:48:39 
     *
     * @param context
     * @param activityTitle
     * @param msgTitle
     * @param msgText
     * @param filePathList
     */
    public static void shareFileTo(Activity act, String activityTitle,
            String msgTitle, String msgText, List<String> filePathList) {
if (null == act) {
return;
}
        if (filePathList == null || filePathList.size() == 0) {
            return;
        }
        // 共享多个文件代码如下
        ArrayList<Uri> uris = new ArrayList<Uri>();
        for (int i = 0; i < filePathList.size(); i++) {
            File f = new File(filePathList.get(i));
            /* mimeType = getMIMEType(f); */
            Uri u = Uri.fromFile(f);
            uris.add(u);
        }

        boolean multiple = uris.size() > 1;
        Intent intent = new Intent(multiple ? Intent.ACTION_SEND_MULTIPLE
                : Intent.ACTION_SEND);
        if (multiple) {
            intent.setType("*/*");
            intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
        } else {

            String fileType;
            String lowerCasePath = filePathList.get(0).toLowerCase();
            if (lowerCasePath.endsWith(".jpg")
                    || lowerCasePath.endsWith(".png")
                    || lowerCasePath.endsWith(".jpeg"))
                fileType = "image/*";
            else if (lowerCasePath.endsWith(".doc")
                    || lowerCasePath.endsWith(".docx"))
                fileType = "application/msword";
            else if (lowerCasePath.endsWith(".pdf"))
                fileType = "application/pdf";
            else if (lowerCasePath.endsWith(".xls")
                    || lowerCasePath.endsWith(".xlsx"))
                fileType = "application/vnd.ms-excel";
            else
                fileType = "application/*";
            intent.setType(fileType);
            intent.putExtra(Intent.EXTRA_STREAM, uris.get(0));
        }
        intent.putExtra(Intent.EXTRA_SUBJECT, msgTitle);
       
        ArrayList<String> extra_text = new ArrayList<String>();
        extra_text.add(msgText);
        intent.putStringArrayListExtra(android.content.Intent.EXTRA_TEXT, extra_text);
        //intent.putExtra(Intent.EXTRA_TEXT, msgText);//170406-js-会有警告 4.x系统的bug,
        //使用putStringArrayListExtra代替

        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);//解决第二次分享到qq失败
        act.startActivity(Intent.createChooser(intent, activityTitle));
    }

有任何疑问或技术合作都可联系我

微信:yanfahezuo 【推荐】

QQ:596957738


标签:打开  分享  发送到  本地文件  
相关评论

加我微信 596957738 (QQ同号)加我微信     QQ联系:596957738    地址:江苏省南京市浦口区

苏ICP备2023050353号

   

苏公网安备32011402010305号

江节胜的Gitee,江节胜的Git地址