精华内容
下载资源
问答
  • java代码 package ... import android.app.Activity; import android.app.Fragment; import android.content.ContentUris; import android.content.Context; import android.content.Intent;...

    java代码

    package com.luo.yikun.getfilepath;
    
    
    import android.app.Activity;
    import android.app.Fragment;
    import android.content.ContentUris;
    import android.content.Context;
    import android.content.Intent;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Build;
    import android.os.Bundle;
    import android.os.Environment;
    
    import android.provider.DocumentsContract;
    import android.provider.MediaStore;
    
    
    import com.unity3d.player.UnityPlayer;
    
    
    import java.io.File;
    
    
    
    
    public class GetFilePath extends Fragment {
        String m_gameObjectName;
        String m_funcName;
    
        private Context unityContext;
        private Activity unityActivity;
    
        private static final String TAG = "GetFilePath";
    
        public void UnityFunc(String gameObjectName, String funcName)
        {
            m_gameObjectName = gameObjectName;
            m_funcName = funcName;
        }
    
        private static GetFilePath Instance = null;
        //private String gameObjectName;
    
        public static GetFilePath GetInstance()
        {
            if(Instance == null)
            {
                Instance = new GetFilePath();
                //Instance.gameObjectName = gameObject;
                Instance.unityActivity = UnityPlayer.currentActivity;
                if (Instance.unityActivity == null)
                {
                    Instance.CallUnity("Instance.unityActivity == null");
                }
                Instance.unityContext = Instance.unityActivity.getBaseContext();
                if (Instance.unityContext == null)
                {
                    Instance.CallUnity("Instance.unityContext == null");
                }
                UnityPlayer.currentActivity.getFragmentManager().beginTransaction().add(Instance, TAG).commit();
    
            }
            return Instance;
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setRetainInstance(true);  // 这一句很重要,保存对该Fragment的引用,防止在旋转屏幕等操作时时丢失引用(Fragment隶属于Activity)
        }
    
        // 调用 Unity
        // gameObjectName 为接受消息的Unity 中 GameObject 的名字
        // functionName   为接受消息的GameObject 挂载 C# 脚本中的函数名
        // _content       为发送给Unity 的内容
        public void CallUnity( String _content)
        {
            UnityPlayer.UnitySendMessage(m_gameObjectName, m_funcName, _content);
        }
    
        public void fileBrower()
        {
            Intent myintent = new Intent(Intent.ACTION_GET_CONTENT);
            myintent.setType("*/*");
            myintent.addCategory(Intent.CATEGORY_OPENABLE);
            startActivityForResult(Intent.createChooser(myintent, "选择文件"), 1);
        }
    
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            if (resultCode != Activity.RESULT_OK) {
                super.onActivityResult(requestCode, resultCode, data);
                return;
            }
            if (requestCode == 1) {
                Uri uri = data.getData();
                String path = getPath(unityContext, uri);
                if (path != null) {
                    File file = new File(path);
                    if (file.exists()) {
                        String upLoadFilePath = file.toString();
                        String upLoadFileName = file.getName();
                        CallUnity(upLoadFilePath);
                    }
                }
    
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    
        public String getPath(final Context context, final Uri uri) {
    
            final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
    
            // DocumentProvider
            if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
                // ExternalStorageProvider
                if (isExternalStorageDocument(uri)) {
                    final String docId = DocumentsContract.getDocumentId(uri);
    //                Log.i(TAG,"isExternalStorageDocument***"+uri.toString());
    //                Log.i(TAG,"docId***"+docId);
    //                以下是打印示例:
    //                isExternalStorageDocument***content://com.android.externalstorage.documents/document/primary%3ATset%2FROC2018421103253.wav
    //                docId***primary:Test/ROC2018421103253.wav
                    final String[] split = docId.split(":");
                    final String type = split[0];
    
                    if ("primary".equalsIgnoreCase(type)) {
                        return Environment.getExternalStorageDirectory() + "/" + split[1];
                    }
                }
                // DownloadsProvider
                else if (isDownloadsDocument(uri)) {
    //                Log.i(TAG,"isDownloadsDocument***"+uri.toString());
                    final String id = DocumentsContract.getDocumentId(uri);
                    final Uri contentUri = ContentUris.withAppendedId(
                            Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
    
                    return getDataColumn(context, contentUri, null, null);
                }
                // MediaProvider
                else if (isMediaDocument(uri)) {
    //                Log.i(TAG,"isMediaDocument***"+uri.toString());
                    final String docId = DocumentsContract.getDocumentId(uri);
                    final String[] split = docId.split(":");
                    final String type = split[0];
    
                    Uri contentUri = null;
                    if ("image".equals(type)) {
                        contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                    } else if ("video".equals(type)) {
                        contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                    } else if ("audio".equals(type)) {
                        contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                    }
    
                    final String selection = "_id=?";
                    final String[] selectionArgs = new String[]{split[1]};
    
                    return getDataColumn(context, contentUri, selection, selectionArgs);
                }
            }
            // MediaStore (and general)
            else if ("content".equalsIgnoreCase(uri.getScheme())) {
    //            Log.i(TAG,"content***"+uri.toString());
                return getDataColumn(context, uri, null, null);
            }
            // File
            else if ("file".equalsIgnoreCase(uri.getScheme())) {
    //            Log.i(TAG,"file***"+uri.toString());
                return uri.getPath();
            }
            return null;
        }
    
        /**
         * Get the value of the data column for this Uri. This is useful for
         * MediaStore Uris, and other file-based ContentProviders.
         *
         * @param context       The context.
         * @param uri           The Uri to query.
         * @param selection     (Optional) Filter used in the query.
         * @param selectionArgs (Optional) Selection arguments used in the query.
         * @return The value of the _data column, which is typically a file path.
         */
        public String getDataColumn(Context context, Uri uri, String selection,
                                    String[] selectionArgs) {
    
            Cursor cursor = null;
            final String column = "_data";
            final String[] projection = {column};
    
            try {
                cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
                        null);
                if (cursor != null && cursor.moveToFirst()) {
                    final int column_index = cursor.getColumnIndexOrThrow(column);
                    return cursor.getString(column_index);
                }
            } finally {
                if (cursor != null)
                    cursor.close();
            }
            return null;
        }
    
    
        public boolean isExternalStorageDocument(Uri uri) {
            return "com.android.externalstorage.documents".equals(uri.getAuthority());
        }
    
        public boolean isDownloadsDocument(Uri uri) {
            return "com.android.providers.downloads.documents".equals(uri.getAuthority());
        }
    
        public boolean isMediaDocument(Uri uri) {
            return "com.android.providers.media.documents".equals(uri.getAuthority());
        }
    }
    
    

    AndroidMainfest文件增加权限

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.luo.yikun.getfilepath">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    </manifest>
    

    demo下载
    https://pan.baidu.com/s/16KOk1Nt7Eri4JPsXsHwm7A
    demo是早期的,可能跟上面的不同,但是测试过unity打包出apk能浏览到文件的真实路径

    展开全文
  • 开源 android 文件管理器

    千次阅读 2015-08-24 17:55:51
    我写一个开源的安卓文件器。源代码在github:https://github.com/yangsmith/File_Explorer # File_Explorer # Android 文件管理器 包常用ui控件有:  1.侧滑菜单slidingMenu  2.兼容actionbar----...

    我写一个开源的安卓文件器。源代码在github:源代码


    # File_Explorer
    # Android 文件管理器

    包常用ui控件有:        
    1.侧滑菜单slidingMenu           
    2.兼容actionbar----actionbarsherlock        

    #项目结构:        
    com.yang.file_explorer     
                    ---------------adapter    适配器        
                    ---------------apis       文件交互操作api        
                    ---------------entity     实体类              
                    ---------------interfaces 接口类             
                    ---------------ui         Activity类       
                    ---------------view       Fragment类        
                    ---------------widget     自定义控件      
                    ---------------utils      工具类       

    #目前app文件功能:         
    1.新建文件         
    2.删除文件       
    3.刷新文件     
    4.文件排序     
    5.文件分享    
    6.文件的复制、剪切        
    7.文件重命名


    #后续添加app文件操作功能:       

    1.文件搜索                 
    2.收藏文件并浏览                 
    3.ftp文件上传                   
    4.文件的压缩           
    5.。。。。。。。。。            

    #预览动画:            


    代码有错误或者疑问的地方,请在下面评论提醒我,我及时回复

    展开全文
  • android文件管理器源码

    千次下载 热门讨论 2011-07-06 19:35:32
    android系统并不自带文件管理器,但是很多情况下,我们有诸如从SD中打开文件的需要. 下面介绍在代码中实现资源管理器,只需要一百行左右的一个类即可以最常用的文件选择功能。本代码为简单的文件管理器的实现,可独立...
  • 安卓中文件中的阅读,请问安卓文件读取也是用buffedstream么?具体怎么用?老师说得不理解
  • (转)Android调用系统自带的文件管理器进行文件选择并获得路径,android文件管理器 Android区别于iOS的沙盒模式,可以通过文件浏览器浏览本地的存储器。Android API也提供了相应的接口。 基本思路,先通过Android ...

    (转)Android调用系统自带的文件管理器进行文件选择并获得路径,android文件管理器

     

    Android区别于iOS的沙盒模式,可以通过文件浏览器浏览本地的存储器。Android API也提供了相应的接口。

     

    基本思路,先通过Android API调用系统自带的文件浏览器选取文件获得URI,然后将URI转换成file,从而得到file。

    调用系统自带的文件浏览器

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button btn= (Button) findViewById(R.id.btn);
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                    intent.setType("*/*");//设置类型,我这里是任意类型,任意后缀的可以这样写。
                    intent.addCategory(Intent.CATEGORY_OPENABLE);
                    startActivityForResult(intent,1);
                }
            });
        }
    }
     intent.setType(“image/*”);
    //intent.setType(“audio/*”); //选择音频
    //intent.setType(“video/*”); //选择视频 (mp4 3gp 是android支持的视频格式)
    //intent.setType(“video/*;image/*”);//同时选择视频和图片

    回调

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK) {//是否选择,没选择就不会继续
            Uri uri = data.getData();//得到uri,后面就是将uri转化成file的过程。
            String[] proj = {MediaStore.Images.Media.DATA};
            Cursor actualimagecursor = managedQuery(uri, proj, null, null, null);
            int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            actualimagecursor.moveToFirst();
            String img_path = actualimagecursor.getString(actual_image_column_index);
            File file = new File(img_path);
            Toast.makeText(MainActivity.this, file.toString(), Toast.LENGTH_SHORT).show();
        }
    }

    onActivityResult函数响应了选择文件的操作。

     

     

     转载来至:http://www.banbaise.com/archives/614

    展开全文
  • Android 文件系统及权限修改

    千次阅读 2015-12-04 11:02:23
    1、android文件系统

    android文件系统

    Android应用程序的数据是存储在Android文件系统的如下根目录中:/data/data/<package_name>/

    可以通过以下api实现对应用程序文件目录进行操作:


    在读取文件或者写入文件时,需要指定文件的打开模式,Android默认提供了以下几种模式:

    1. MODE_PRIVATE :该文件只能被当前应用程序读写
    2. MODE_WORLD_READABLE:该文件的内容可以被其他的应用程序读取
    3. MODE_WORLD_WRITEABLE:该文件的内容可以被其他程序读、写
    4. MODE_APPEND:以追加的方式在文件中添加内容
    通过以上的方法可以实现对/data/data/<package_name>/目录下的文件进行操作。

     
        public void data() {
            // 内部存储
    
            //   /data/data/com.zhangke.plugsubject/app_text
            System.out.println(getDir("text", Context.MODE_PRIVATE).getAbsolutePath());
            //   /data/data/com.zhangke.plugsubject/files
            System.out.println(getFilesDir().getAbsolutePath());
            //  /data/data/com.zhangke.plugsubject/cache
            System.out.println(getCacheDir().getAbsolutePath());
    
        }


    Android SD卡存储

    Android手机中一般都会带有内存存储卡,对于一些比较大的文件我们不会将其存储在应用程序的数据文件夹中,而是通过将数据存储在sd卡中达到存储数据的目的。


    Android系统为我们提供了用于操作sd卡的api。

    1、要想对sd卡中的文件进行操作,首先需要在AndroidManifest.xml需要为应用添加权限
        <!-- 允许创建和删除文件-->
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
        <!-- 允许从sd卡中读取文件 -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <!-- 允许向sd卡中写入文件 -->
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    2、在对sd卡进行操作前,要判断sd卡是否可用即sd卡是否已挂载
        public void storage() {
            //获得sd卡挂载状态
            if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {//已挂载
    
                //   /storage/emulated/0
                System.out.println(Environment.getExternalStorageDirectory().getAbsolutePath());
    
                //   /storage/emulated/0/Android/data/com.zhangke.plugsubject/cache
                System.out.println(getExternalCacheDir().getAbsolutePath());
    
                //   /storage/emulated/0/Android/data/com.zhangke.plugsubject/files/image
                System.out.println(getExternalFilesDir("image").getAbsolutePath());
    
            }
        }


    Android调用Linux命令修改文件权限

    在通过Context的getFileDir()或者getCacheDir()获取路径,并将文件存放在该路径下时,默认情况下,该文件时不能获得全部的读写权限。例如,对于apk的升级,如果将升级包放入到/data/data/packagename/files/或者/data/data/packagename/cache/目录下,会出现包解析错误,这就是因为在这两个目录在的文件没有读写权限导致的。大家都知道Android是基于Linux的,所以如果要改变文件的读写权限,可以通过在Android中执行Linux命令来改变权限。

    Linux数字权限

    在Linux中通过数字来代表数字是否具有权限
    读(R) : 4
    写(W) : 2
    执行(X)   : 1

    如图:



    执行Linux命令修改权限

    提示:
    如果要修改某个目录下文件的权限,首先要修改目录的权限,要不依然不能对文件进行操作。

    代码如下:
    //通过linux命令修改apk更新文件读写权限
    String[] command = {"chmod", "777", "文件或者目录路径"};  
    ProcessBuilder builder = new ProcessBuilder(command);  
    try {  
    	builder.start();  
    } catch (IOException e) {  
    	e.printStackTrace();  
    }  


    展开全文
  • Android文件读写权限

    万次阅读 2019-04-24 10:45:46
    uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 然后在activity的...
  • android文件服务器

    千次阅读 2016-11-05 17:40:12
    一个简单带上传功能的安卓服务器,简单测试可以上传50M以下的文件,可以自动返回服务文件目录,相对方便好用。 下载地址:
  • Android 文件下载三种基本方式

    万次阅读 2017-06-13 20:06:18
    总结了一下Android 文件下载的三种方案
  • Android文件目录结构说明

    千次阅读 2018-09-28 20:25:31
    (1)Android文件存储目录结构 https://blog.csdn.net/luoguopeng/article/details/72832567 (2)Android 文件夹简单介绍 https://blog.csdn.net/a13069730106/article/details/54232810 ...
  • android 文件系统类型的介绍

    千次阅读 2014-05-11 16:26:51
    android系统启动过程中有两个很重要的文件,init.c和init.rc ,这两个文件具体重要的在哪里,这里不再累赘,网上资料一大把。不过通过这两个文件,我们可以很清楚的看到比如dev 等目录属于哪种文件类型,了解之后就...
  • Android是基于Linux内核开发的,所以它的文件系统也是跟Linux文件系统类似。 首先我们来看Android存储的分类。 内部存储和外部存储、内置SD卡和外置SD卡 一般的Android手机都有2个存储卡,一个内置到手机里的,不可...
  • Android 文件存储 和 权限管理

    万次阅读 2016-09-08 18:19:05
    转载请标明出处: :http://blog.csdn.net/huaiyiheyuan/article/details/52473984android文件存储方式 内置和外置存储(Choose Internal or External Storage),外置存储又分为 私有和公有需要对SD卡进行操作...
  • 我想实现安卓文件管理,有一个文本框,一个按钮,我在文本框中输入文件名,点击按钮,下面有一个listview就会显示文件名称?没有思路
  • 安卓文件下载库 | PRDownloader 96 两只黄鹂鸣翠鸟 关注 2017.12.05 11:05 字数 171 阅读 852评论 0喜欢 4 名称 PRDownloader 语言 Android 平台 GitHub 作者 MindorksOpenSource 链接 点此进入 今天推荐的是一款...
  • Android 文件管理器 Android文件管理器源代码

    千次阅读 热门讨论 2012-07-30 14:55:30
    http://www.iandroid.cn/goods-1334917.html 地址2: http://www.appchina.com/app/com.example.filebrowerapp/ 该软件是一个文件管理器,它能帮助你更好的管理手机上的文件。 1.实现了对文件或文件夹的创建...
  • Android文件访问权限和路径问题

    千次阅读 2014-12-17 10:57:11
    android开发,对于文件的访问权限中说明我感觉不是很清楚,用了一个小例子来说明android创建文件,用另外一个应用去访问创建的文件。 在android文件创建的模式中使用MODE_PRIVATE创建文件,API中的解释如下: ...
  • Android文件上传.rar

    千次下载 热门讨论 2014-04-15 20:16:52
    此为博客例子代码,详细讲解请参考:http://blog.csdn.net/lmj623565791/article/details/23781773 有问题博客中留言
  • Android 文件格式

    千次阅读 2010-06-26 18:12:00
    文件格式描述: Android 的相关文件类型: Java---应用程序源文件 Android 本身相当一部分是由 java 编写而成,而且 android 应用必须使用 java 开发 Class---java 编译后的目标文件 是由 java 虚拟机编译而成一个...
  • 在macOS和Android或任何其他MTP设备之间传输文件一直是噩梦。有一些在线可用的File Transfer MTP应用程序,但其中大多数要么太贵,要么UI / UX不好 这次小编为大家分享一款非常好用且免费的高级Android文件传输工具...
  • Android文件选择器

    千次阅读 2017-09-15 18:10:50
    项目中用到文件选择器,功能是可以筛选出常用的文件也可以在所有的文件中选择。 先看一下效果图: 图中,左面是可以选择常用的文件,右边就是从手机跟目录开始一层一层的选择。 UI 方面就不多说啦,使用两个...
  • Qt For Android 文件存储

    千次阅读 2016-02-14 14:12:09
    Qt For Android 数据存储之文件操作
  • 我在Android项目中读取电脑D盘中的文件,D盘中文件存在,New File的时候文件找不到呢,我建了个java项目可以找到,是不是Android项目中不能读取电脑硬盘中的文件啊?
  • android文件选择器filePicker

    千次阅读 2020-07-21 19:49:18
    github上搜了一圈,没有找到特别符合的,没办法自己写了一个,现在上传到了github:...2.设置跳转(maxNum参数是选择的最大文件数) Intent intent=new Intent(MainActivity.this, LocalUpdateActivity.class); i
  • 1.查看android文件系统版本 到build/core/version_plaform.mk中去查询plaform_version的定义值 2.查看linux内核版本 源码下看下Makefile VERSION = 3 PATCHLEVEL = 0 SUBLEVEL = 15 EXTRAVERSION = NAME =...
  • adb shell "while true; do cat; sleep 1; done < /sdcard/A-monkey/error.txt
  • 配置文件放在了assets目录下 package com.joydata.www.config; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import java.io.File; import ...
  • Android 文件转base64字符串

    千次阅读 2018-08-29 14:27:31
    * 文件转base64字符串 * * @param file * @return */ public static String fileToBase64(File file) { String base64 = null; InputStream in = null; try { in = new FileInputStream(fil...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,191,125
精华内容 476,450
关键字:

android文件