`
心雨心
  • 浏览: 355854 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

获取sdcard上的所有apk

阅读更多

package com.shishixun.installapk;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;

import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.format.Formatter;
import android.util.Log;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final File appFolder = new File( "/sdcard" );
     ArrayList<File> files = getFiles( appFolder,
    true );
     PackageManager pm = getPackageManager( );
     for ( int i = 0, size = files.size( ); i < size; i++ )
  {
   File f = files.get( i );
   PackageInfo pi= pm.getPackageArchiveInfo( f.getAbsolutePath( ), 0 );
   if ( pi != null )
   {
    ApkInfo holder = new ApkInfo( );
    holder.file = f;
    holder.pkgName = pi.packageName;
    holder.size = f.length( );
    holder.sizeString = Formatter.formatFileSize( MainActivity.this,
      holder.size );
    holder.version = pi.versionName == null ? String.valueOf( pi.versionCode )
      : pi.versionName;
    System.out.println("file="+f+"pkgName="+holder.pkgName +"size"+holder.sizeString+"version"+holder.version  );
   }
  }

    }
   
   
    ArrayList<File> getFiles( File parent, final boolean recursive )
 {
  final ArrayList<File> files = new ArrayList<File>( );

  FileFilter filter = new FileFilter( ) {

   public boolean accept( File f )
   {
    if ( f.isFile( )
      && f.getName( ).toLowerCase( ).endsWith( ".apk" ) )

    {
     files.add( f );
    }
    else if ( recursive && f.isDirectory( ) )
    {
     try
     {
      // try skip links
      if ( f.getAbsolutePath( )
        .equals( f.getCanonicalPath( ) ) )
      {
       f.listFiles( this );
      }
     }
     catch ( Exception e )
     {
      Log.e( MainActivity.class.getName( ),
        e.getLocalizedMessage( ),
        e );
     }
    }
    return false;
   }
  };

  parent.listFiles( filter );

  return files;
 }
   
   
    /**
  * ApkInfo
  */
 private static final class ApkInfo
 {

  File file;
  CharSequence label;
  String pkgName;
  String version;
  String sizeString;
  long size;
  Drawable icon;
  int installed;
  boolean checked;

  ApkInfo( )
  {

  }
 }
}

分享到:
评论

相关推荐

    android 无sdcard 下载安装 apk 多线程 断点 自动安装apk

    5. **权限管理**:在Android 6.0及以上版本,运行时权限管理需要在安装APK前获取写入外部存储的权限。如果设备没有SD卡,那么内部存储也需要权限。开发者需要在代码中适当地请求这些权限,并处理用户可能拒绝的情况...

    手机apk拷贝到sdcard

    标题“手机apk拷贝到sdcard”涉及到的是Android操作系统中移动应用程序(APK)的存储管理,特别是如何将APK文件从设备的内部存储移动到外部可移除的SD卡上。这一操作对于用户来说,可能是因为他们希望节省手机内部...

    Android 获取未安装的APK图标、版本号、包名等信息方法

    Android 获取未安装的APK图标、版本号、包名等信息方法 Android 获取未安装的APK图标、版本号、包名等信息方法是 Android 应用程序开发中的一种常见需求。通过本文,我们将学习如何获取未安装的APK图标、版本号、包...

    android安装系统目录下的APK包

    1. **获取APK文件**:首先,你需要拥有APK文件,这可以通过从Google Play商店下载,或者从第三方应用市场、开发者网站获取。如果你有APK的本地副本,通常会保存在 `/sdcard/Download` 或者自定义的下载路径中。 2. ...

    【android】apk汉化

    APK包含了应用的代码、资源、元数据等所有必要的组件。当涉及到“apk汉化”时,这意味着我们需要修改APK文件中的语言资源,使其适应中文用户的需求。下面我们将深入探讨如何使用工具进行APK的汉化以及在模拟器上安装...

    从ROM中提取apk

    在Android系统中,APK文件是应用程序的主要载体,它包含了应用的所有代码、资源、资产以及配置文件。"从ROM中提取apk"这个主题涉及到的是如何从设备的Read-Only Memory (ROM) 中获取预装应用的APK文件,这对于开发者...

    android Sdcard的相关操作

    本文主要探讨了如何在Android模拟器上创建和管理SDCard镜像文件,以及如何使用ADB工具进行文件的推送和拉取。 首先,创建SDCard镜像文件是通过`mksdcard`命令完成的。这个命令允许开发者指定镜像文件的名称(如`...

    sdcard.txt

    3. **存储路径**:Android提供不同的存储路径,如`Environment.getExternalStorageDirectory()`获取公共SD卡目录,`getExternalFilesDir()`获取应用私有的外部存储空间。 4. **文件I/O操作**:使用Java或Kotlin的流...

    Android中获取apk安装包信息的方法

    `PackageManager`是Android系统提供的一个类,它负责管理设备上所有应用程序的安装、查询、卸载等操作。获取APK信息通常涉及以下步骤: 1. 创建一个`PackageManager`对象,可以通过上下文`Context`的`...

    apk版本的的比对、下载、安装需求分析

    1.请求服务器获取服务器存储的版本信息 2.通过比对手机端的版本和服务器的版本 3如果要更新需要符合以下判断条件 ... 2)sdcard剩余存储量与apk文件大小的比对 3)是否在wifi环境下 4.下载完成后自动安装

    Unity应用获取外置SD卡路径方法

    5. **打包与部署**:在打包场景时,要确保所有依赖项(包括PicoVR SDK的库文件)都被正确地包含在apk中。此外,根据不同的设备特性,可能需要调整构建设置,如屏幕分辨率、目标API版本等。 总的来说,通过Unity结合...

    将db文件和apk一起打包

    在上面的示例代码中,使用了Environment类来获取外部存储目录的路径,例如/sdcard/dictionary目录。 知识点9:Android中的数据库路径 在Android中,数据库路径是一种非常重要的编程技术。在上面的示例代码中,使用...

    安卓文件下载上传解压相关-apk下载自动安装.rar

    这表明,提供的代码可能是作为学习和参考的片段,可能涵盖了上述的一些步骤,但可能不包括所有细节,比如错误处理、权限获取等。 总的来说,这个压缩包可能是为了教学目的,帮助开发者理解如何在安卓应用中处理文件...

    AudioTest.apk的源码

    首先,`AudioTest.apk`的核心功能是展示一个自定义的ListView,用于显示存储在/mnt/sdcard/路径下mp3和wav格式的音频文件。在Android中,ListView是展示大量数据的常用组件,它允许用户滚动查看多个项目,且可以进行...

    静默安装Apk

    - 将APK文件复制到设备的可读写目录,如 `/sdcard/`。 - 编写一个具有root权限的shell脚本,内容包括`pm install -t -r &lt;apk_path&gt;`,其中`-t`表示允许安装测试版应用,`-r`表示替换已存在的应用。 - 使用Java...

    安卓SD卡文件管理更新信息相关-android使用DownloadManager自动更新安装apk.rar

    综上所述,通过Android的`DownloadManager`服务,我们可以实现应用的自动下载更新,同时结合SD卡文件管理,将APK保存在合适的位置,并在下载完成后进行安装。这是一个实用的功能,可以极大地提升用户体验,尤其是...

    米家5.4.54,获取token

    米家v5.4.54版本有一个Bug,其日志文件暴露了设备...安装米家v5.4.54版本,登录小米账户并等待设备连接后可以在/sdcard/SmartHome/logs/Plug_Devicemanager中找到名为yyyy-mm-dd.txt的日志文件,在其中搜索 token即可。

    adb工具包刷机工具

    fastboot getvar all 获取手机所有信息 fastboot getvar product 获取手机内部版本号(一般为vle或villec2) fastboot getvar cid 获取cid (刷RUU必备啊) fastboot oem get_identifier_token 获取用户标识码(官...

    android在Sdcard中上传中文文件镜像

    由于Google Play商店可能没有提供该应用,你可能需要从官方网站或者其他安全的第三方应用市场获取APK文件进行安装。安装完成后,打开UltraISO,你可以浏览本地存储,包括SD卡,找到你的中文镜像文件。 在上传镜像...

Global site tag (gtag.js) - Google Analytics