首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在android的activity result中获取文件大小

在Android的Activity Result中获取文件大小,可以通过以下步骤实现:

  1. 首先,在调用其他应用程序或系统组件来选择文件时,使用startActivityForResult()方法启动一个文件选择器的Intent。
  2. 在当前Activity中,重写onActivityResult()方法,以便在选择文件后获取返回的结果。
  3. onActivityResult()方法中,通过检查请求码和结果码来确定操作是否成功,并获取选择的文件的URI。
  4. 通过使用ContentResolver类的openInputStream()方法,打开文件的输入流。
  5. 使用InputStream对象获取文件的字节数,并计算文件大小。

以下是一个示例代码:

代码语言:java
复制
private static final int FILE_SELECT_CODE = 1;

// 启动文件选择器
private void showFileChooser() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("*/*"); // 选择所有文件类型
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    startActivityForResult(intent, FILE_SELECT_CODE);
}

// 处理文件选择结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == FILE_SELECT_CODE && resultCode == RESULT_OK) {
        Uri uri = data.getData();
        try {
            // 打开文件的输入流
            InputStream inputStream = getContentResolver().openInputStream(uri);
            // 获取文件大小
            int fileSize = inputStream.available();
            // 在这里可以使用文件大小进行后续操作
            // ...
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这个例子中,showFileChooser()方法用于启动文件选择器,onActivityResult()方法用于处理选择文件后的结果。在onActivityResult()方法中,通过getContentResolver().openInputStream(uri)打开文件的输入流,并使用inputStream.available()获取文件的大小。

注意:这个例子只是获取文件大小的基本示例,实际应用中可能需要进行错误处理、权限检查等其他操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在 Android 中如何确定 App(Activity) 的启动者

最近在帮忙定位一个问题,涉及到某个应用自动启动了,为了确定是谁调用的,使用如下的日志进行查看(注:为了简单考虑,下面的启动者为launcher) 1 2 3 4 (pre_release|✔) % adb...cat=[android.intent.category.HOME] flg=0x10000000 hwFlg=0x10 cmp=com.huawei.android.launcher/.unihome.UniHomeLauncher...u0_a70 的含义 u0 默认的手机第一个用户(可以通过设置里面的多用户新增和切换) a 代表app 70 代表着第70个应用 转换公式 简单而言,对应的公式是这样 u0_a70 = “u0_” +...References https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/Process.java...https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/UserHandle.java

3.3K20

获取Android当前运行的activity之UsageStatsManager

前言:之前总结了如何获取当前界面正在运行的APP包名,也就是上一个博客。这里做一下补充。...UsageStatsManager是用来统计app使用情况的类,用于获取包含特定时间范围的应用包的使用情况统计信息;在Android api21(即Android5.0引入);系统API稳定性好,Android5.0...app 我们将UsageStatsManager获取当前运行的app相关代码写在一个Service中,通过log打印结果,这样可以切换运行的app,并实时看到结果,主要的代码如下: private void...= null) { long now = System.currentTimeMillis(); //获取10分钟之内的应用数据...(代码里是10分钟)最后一个活动的应用的包名,我运行了视频软件,一直在视频界面但不去点它,10分钟后就捕获不到了。

4K30
  • 【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task

    文章目录 一、打印 Android 中当前运行的 Activity 任务栈信息 二、Activity 任务栈信息分析 三、Activity 在相同 Stack 的不同 Task 情况 一、打印 Android...中当前运行的 Activity 任务栈信息 ---- 使用如下命令 , 打印 Android 手机中的 Activity 栈 : adb shell dumpsys activity activities...; 默认状态下 , 相同的应用 , 打开的 Activity , 其 Activity 都在同一个任务栈中 ; 三、Activity 在相同 Stack 的不同 Task 情况 ---- 默认状态下..., 同一个应用启动的两个 Activity 都在相同 Stack 的相同 Task 中 , 但是如下情况会出现 Activity 在相同 Stack 的不同 Task 中 ; 参考 【Android...singleTask 启动模式 , 则新启动的 Activity 放在另一个 Task 中 ; 注意 : 两个 Activity 虽然在不同的 Task 任务中 , 但还是在相同的 Stack 栈中

    5.9K10

    Unity中Android 触发home,回收覆盖在UnityPlayerActivity上层的activity的问题

    问题 最近在开发一个Android SDK的项目,提供给游戏方接入,发现游戏是unity引擎;正常游戏都是只有一个activity(继承UnityPlayerActivity),但是SDK业务交互上需要特定场景会弹出一个或者多个新的...activity在UnityPlayerActivity上,这个时候如果安卓手机点击home回到桌面,再点击图标返回,发现除了UnityPlayerActivity,其他的activity都被回收了。...分析 将打包的apk解析出AndroidManifest.xml发现,UnityPlayerActivity在AndroidManifest.xml中的launchMode是singleTask,发现问题了...天真的想法一: 一开始天真的我发现,修改一下项目的AndroidManifest.xml中的UnityPlayerActivity的launchMode就ok了。...修改之后,重新运行项目,相同的操作,问题还是存在;于是我又重新反编译解析出apk的AndroidManifest.xml,惊讶的发现:在AndroidManifest.xml中的UnityPlayerActivity

    4.3K52

    【Android 安全】DEX 加密 ( Application 替换 | 分析 Activity 组件中获取的 Application | ActivityThread | LoadedApk )

    Instrumentation 涉及源码 七、 LoadedApk 涉及源码 一、 Activity 中的 getApplication() 方法分析 ---- 在 Activity 中调用 getApplication...() 方法 , 获取 Application 的过程分析 ; 下面就是调用的 Activity 的 getApplication() 方法 , 其获取的是 Application mApplication...成员 ; 而 mApplication 成员是在 attach() 方法中赋值的 ; public class Activity extends ContextThemeWrapper.../app/Activity.java 二、 ActivityThread 中的 H 处理 消息及 handleLaunchActivity 方法操作 ---- 在 ActivityThread 中 ,...成员 ---- LoadedApk 中的 mApplication 成员已经替换成了自定义的 Application , 不再是代理的 Application , 因此从 Activity 中获取的

    61460

    在 Activity 的 onCreate() 方法中为什么获取 View 的宽和高为0?

    在 Activity 的 onCreate() 方法中为什么获取 View 的宽和高为0 ?...的onCreate()方法中我们尝试获取控件的宽和高,却获取得是0,这是因为 View 绘制和 Activity 的生命周期方法并不同步,即使 Activity 回调了 onCreate()、onStart...()、onResume() 方法,View 也不一定同步完成绘制,所以此时在这些方法里面获取 View 的尺寸时就获取不到,解决方法有以下几种: 方法一、在 Activity 的 onWindowFocusChanged...() 方法中获取 View 的尺寸。...---- 最后想说的是,本系列文章为博主对Android知识进行再次梳理,查缺补漏的学习过程,一方面是对自己遗忘的东西加以复习重新掌握,另一方面相信在重新学习的过程中定会有巨大的新收获,如果你也有跟我同样的想法

    1.2K30

    Android5.0以后获取当前activity的应用包名

    最近遇到一个需求,其中一个功能就是需要获取当前activity的应用包名,当然执行者也可以是别的应用,并不只是本activity所属的应用来回去当前activity。...Android5.0之前是有一个很简单的方法,那就是直接调用activityManager的getRunningTasks函数,我们都知道android通过activity栈来管理众多的activity...,那么我们获取到这个栈,然后取栈顶元素,就是此时前台的activity了,如果要获取对应包名, ActivityManager activityManager = (ActivityManager)context.getApplicationContext...并且前台Activity所在进程的名称为包名,若在manifest中自定义了其他的进程名,则失效。...android:name="android.permission.REAL_GET_TASKS" />

    2.1K20

    android onresume函数,android – 在Activity中重新创建后未调用onResume

    大家好,又见面了,我是你们的朋友全栈君。 在应用程序设置中进行某些更改时,我在recreate的onActivityResult中调用MainActivity。重新创建后,不调用onResume。...我也收到错误:E/ActivityThread: Performing pause of activity that is not resumed 从this问题开始,我了解到不能从onResume调用此函数...没有recreate的情况下如何使用Handler? 任何想法将不胜感激。谢谢! 最佳答案 在onResume()之前调用OnActivityResult()。...您可以做的是在OnActivityResult()中设置一个标志,您可以在onResume()中检入,如果该标志为true,则可以重新创建活动。...您实际上可以做的是完成活动并开始相同的活动,而不是重新创建活动。您将获得相同的效果。

    3.4K20

    Android中在activity给别的页面的控件添加控件点击事件

    最简单的办法就是在xml的控件里写android:onClick="method",然后在activity里面写对应的方法。...在activity里直接写findViewById会出现空指针异常,因为当前activity对应的页面里面找不到要绑定的控件。...,这样可以找到那个控件虽然不会报空指针异常,但是新建了一个View和当前activity使用的View不是同一个View,所以就算设置了点击事件也无效。...发现这个问题是在写AlertDialog的时候自定义了AlertDialog的View,然后里面有Button需要设置点击事件 AlertDialog.Builder adBuilder = new AlertDialog.Builder...然后给Button添加点击事件,看似没问题,但是前面 View dialogLayout = getLayoutInflater().inflate(R.layout.dialog, null); 已经获取了那个页面

    1.8K20

    在 Linux 中检查文件大小的 4 种方法

    在 Linux 操作系统中,经常需要检查文件的大小。无论是管理文件系统空间,还是确定文件传输的大小限制,了解文件大小是非常重要的。...本文将介绍 4 种常用的方法,帮助你在 Linux 中检查文件的大小。 方法一:使用 ls 命令 ls 命令是 Linux 中最常用的文件和目录列表命令之一。它可以显示文件的各种属性,包括文件大小。...使用 ls 命令检查文件大小的方法很简单,只需执行以下命令: ls -l 上述命令会显示文件的详细信息,其中包括文件的大小。文件大小以字节为单位显示,并且在输出中的第 5 列。...要使用 du 命令检查单个文件的大小,可以执行以下命令: du -h 上述命令中的 -h 选项用于以人类可读的格式显示文件大小。...总结 通过使用上述 4 种方法之一,你可以在 Linux 中方便地检查文件的大小。这些方法提供了不同的方式来获取文件大小信息,适用于不同的场景和需求。

    20.1K22

    获取屏幕上正在显示的activity 博客分类: Android小技巧

    用过ActivityManager的童鞋估计都知道,可以从ActivityManager里面可以获取到当前运行的所有任务,所有进程和所有服务,这是任务管理器的核心。...仔细看getRunningTasks的文档,里面说获取的是系统中"running"的所有task,"running"状态包括已经被系统冻结的task。...而且返回的这个列表是按照顺序排列的,也就是说第一个肯定比第二个后运行。 getRunningTasks有个整型参数,表示返回列表的最大个数。...那么,我们如果把1作为参数给进去,那么他返回的task就是当前运行的那个task,然后从task中获取到最顶层的activity,这个activity就是当前显示给用户的那个activity了。...ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); ComponentName cn = am.getRunningTasks

    2.9K30

    Android 中 activity 的生命周期和数据储存

    Activity 作为 Android 的四大组件之一,其与用户接触的机会最多,所以灵活运用 activity 类能够让我们的程序用户体验感更好。...这个图想必各位朋友已经看过了,我们来解释一下图片中方法的作用: 上图中方法为继承 activity 类的派生类覆盖实现的方法,从 activity 对象创建到结束被摧毁都是在这些方法中循环调用 @Override...如果想在屏幕显示方向改变或者屏幕尺寸改变时系统不杀死当前 activity 对,我们需要在当前工程的配置文件中配置一段代码。具体实现如下: ?...在当前工程的配置文件 AndroidManifest.xml 中的 activity标签中加入 :android:configChanges="orientation|keyboardHidden|screenSize...这样,在发生屏幕大小、方向等事件是不会调用 onDestroy() 方法而摧毁 activity 活动对象,而是调用上述方法去处理。

    82020

    Android中Activity类的7个回调方法

    第一行代码安卓第二版P65页: onCreate()这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动第一次被创建的时候调用,你应该在这个方法中完成活动的初始化操作,比如加载布局...onStart() 这个方法在活动由不可见变为可见的时候调用。 onResume() 这个方法在活动准备好喝用户进行交互的时候调用,此时的活动一定位于返回栈的栈顶,并且处于运行状态。...以上7个方法中除了 onRestart()方法,其他都是两两相对的,从而又可以将活动分为三种生存期。 完整生存期。...活动在onCreate()方法和onDestory()方法之间所经历的,就是完整生存期,一般情况下,一个活动会在onCreate()方法中完成各种初始化操作,而在onDestory()方法中完成释放内存的操作...我们可以通过这两个方法,合理地管理那些对用户可见的资源,比如在onStart()方法中对资源重载,在onStop()方法中对资源进行释放,从而保证处于停止状态的活动不会占用过多内存。 前台生存期。

    1.3K20

    【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 在 PathClassLoader 和 BootClassLoader 之间插入 DexClassLoader )

    实例对象作为 PathClassLoader 的父节点 二、完整代码示例 三、执行结果 四、博客资源 前言 ---- 在 上一篇博客 【Android 逆向】启动 DEX 字节码中的 Activity...组件 ( 替换 LoadedApk 中的类加载器 | 加载 DEX 文件中的 Activity 类并启动成功 ) 中 , 通过 替换 LoadedApk 中的类加载器可以成功加载 DEX 字节码文件中的...Activity 类 , 并成功启动 Activity ; 本篇博客中尝试使用 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败...中的 类加载器 ClassLoader // 然后使用替换的类加载器加载 DEX 字节码文件中的 Activity 组件 if (Build.VERSION.SDK_INT..., 但是使用类加载器加载 Activity 组件是成功的 ; 在 启动 Activity 组件之前打上断点 , 可以发现 , dexClassLoader.loadClass 操作是成功的 , 加载

    1.2K30
    领券