`
zhangfan822
  • 浏览: 255470 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

android中intent带Uri传输时中文的乱码问题 .

 
阅读更多

URl用中文去访问是没有问题的,因为android在内部进行了转码。 但是从URL获取文件名的时候,因为android已经转过码,所以得到的就是乱码了。这时候需要用到android提供的方法Uri.decode()获取正确的中文路径。 此方法返回的路径带有:file:// 所以,需要截取一下才能用

工作时遇到一个问题,我在VideoActivty中找到一个视频文件,启动Gallery3D中的MovieView来进行播放,然后在MovieView端得到此文件的路径。我当时传进了一个:

   String mpath = "/mnt/sdcard/叶问2.mp4";

的路径,其中文件名是中文的。然后我在MovieView中得到的文件名竟然是乱码,最开始我是这么处理的:

VideoActivty处的代码大致为:

        String mpath = "/mnt/sdcard/叶问2.mp4";
        String type = "video";
        File f = new File(mpath);
        Uri uri = Uri.fromFile(f);
        Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setAction(android.content.Intent.ACTION_VIEW);
        intent.setDataAndType(uri, type);
        this.startActivity(intent);

 其实URI已经考虑到了这种情况。琢磨后用了这种方式得到了中文路径。

        Intent intent2 = getIntent();
        Uri mUri = intent2.getData();
        String path = intent2.getDataString();
        path = Uri.decode(path).substring(7, path.length());
        android.util.Log.d("URI", "path is " + path);

 Uri.decode函数Google已经帮我们实现好了。

分享到:
评论

相关推荐

    Android中Intent的Uri使用

    ### Android中Intent的Uri使用详解 #### 概述 在Android开发中,`Intent`是进行组件间通信的重要工具之一,它可以启动一个Activity、BroadcastReceiver或Service,也可以用来向服务发送数据请求。其中,`Intent`的...

    Android 常用的Intent的URI及示例

    intent.setType("vnd.android-dir/mms-sms"); startActivity(intent); ``` 以上示例仅展示了Android中Intent的URI部分功能,实际上Intent的灵活性远不止于此。掌握这些基本用法,将有助于开发者构建更强大、更智能...

    Android Intent调用 Uri的方法总结

    在Android开发中,Intent是应用之间通信的重要工具,它可以用于启动其他活动、服务或者广播接收器。本篇文章将深入探讨如何使用Intent与Uri相结合来实现各种功能。 首先,调用浏览器是一个常见的操作。通过以下代码...

    android.intent.action.TIME_TICK

    在给定的标题"android.intent.action.TIME_TICK"中,涉及的是一个特定的系统广播,当系统时间每分钟改变时,这个广播就会被发送。这个广播事件对于那些需要定时更新或依赖于系统时间的应用程序非常有用。 描述中...

    Android如何通过URI获取文件路径示例代码

    最近在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。 因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M。 很快,拍照的这部分...

    android用于打开各种文件的intent.pdf

    在上面的代码中,我们首先创建了一个 Intent 对象,并指定了动作为 "android.intent.action.VIEW",然后使用 setDataAndType 方法设置了 URI 和类型为 "application/pdf",最后使用 startActivity 方法启动该 Intent...

    Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面.

    Intent intent = new Intent(Intent.ACTION_EDIT, Uri.parse("content://com.android.contacts/contacts/" + "1")); startActivity(intent); ``` 联系人列表界面 要跳转到联系人列表界面,可以使用以下代码: ```...

    android Intent实例

    returnIt.setType("vnd.android-dir/mms-sms"); ``` 这个示例展示了如何通过`Intent`启动短信发送界面,并预填短信内容。 ##### 11. 直接发送短信 ```java Uri smsToUri = Uri.parse("smsto://100861"); Intent ...

    Android利用Intent启动和关闭Activity

    在Android应用程序开发中,Intent是连接各个组件(如Activity、Service等)的关键桥梁,主要用于启动和关闭Activity。Intent不仅能够启动一个新的Activity,还能在Activity之间传递数据,实现应用内部或应用间的交互...

    Android的Intent实验

    在Android开发中,Intent是一种非常重要的组件,它用于在应用程序的不同组件之间传递消息,实现活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)以及内容提供者(Content Provider)之间的交互...

    Android-Intent-数据存取-ContentProvider.doc

    "Android Intent 和 ContentProvider" Android Intent 是 Android 组件之间的信使,负责在 Android 三大核心组件(Activity、Service、Broadcast Receiver)之间传递信息。Intent 是一个将要执行的动作的抽象描述...

    android各种文件的intent

    - 创建Intent并设置其动作为`VIEW`,同时添加默认分类(category)和标志(flag)`FLAG_ACTIVITY_NEW_TASK`,这样当Intent被触发时,将会在一个新的任务栈中启动一个新的Activity。 - 创建URI对象,这里使用的是`Uri...

    android----intent

    例如,一个Activity可以通过在AndroidManifest.xml中定义Intent过滤器,声明它能响应特定的Action、Data URI或Category,这样当有匹配的隐式Intent被发送时,这个Activity就会被激活。 压缩包内的文件名称列表: 1...

    android中intent可启动的应用举例2022优秀文档.pptx

    it.setDataAndType(installUri, "application/vnd.android.package-archive"); startActivity(it); ``` - 卸载应用,可以使用`ACTION_DELETE`: ```java Uri packageURI = Uri.parse("package:...

    Android Intent的几种用法全面总结

    Android中的Intent是应用程序之间通信的重要桥梁,用于启动其他Activity、Service或者BroadcastReceiver,甚至可以触发系统级别的操作。本文将全面总结Intent的几种主要用法。 1. 显示网页: 使用`ACTION_VIEW`与...

    android中intent使用示例

    在Android开发中,Intent是一种非常重要的组件间通信机制。它被用来启动活动(Activity)、服务(Service)或者传递数据。本示例将深入探讨Intent的基本用法和常见应用场景。 首先,Intent分为显式Intent和隐式...

    Andriod接收广播的类

    恢复已经停止的更新下载。 'android.server.checkin.FOTA_RESTART' 通过 OTA 下载并安装操作系统更新。 'android.server.checkin.FOTA_UPDATE' 用户按下了'Media Button'。...'android.intent.action.PACKAGE_ADDED'

    android的intent跳转

    intent.setType("vnd.android.cursor.item/person"); intent.putExtra(android.provider.ContactsContract.Intents.Insert.NAME, name); intent.putExtra(android.provider.ContactsContract.Intents.Insert....

    Android中使用Intent获取其他应用程序信息的方法介绍.pdf

    若要启动另一个应用程序的特定组件,例如"com.yellowbook.android2"中的"AndroidSearch"组件,可以创建一个Intent,设置ACTION_MAIN动作,ComponentName指向目标组件,最后启动Intent。 ```java Intent i = new ...

Global site tag (gtag.js) - Google Analytics