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( )
{
}
}
}
分享到:
相关推荐
5. **权限管理**:在Android 6.0及以上版本,运行时权限管理需要在安装APK前获取写入外部存储的权限。如果设备没有SD卡,那么内部存储也需要权限。开发者需要在代码中适当地请求这些权限,并处理用户可能拒绝的情况...
标题“手机apk拷贝到sdcard”涉及到的是Android操作系统中移动应用程序(APK)的存储管理,特别是如何将APK文件从设备的内部存储移动到外部可移除的SD卡上。这一操作对于用户来说,可能是因为他们希望节省手机内部...
Android 获取未安装的APK图标、版本号、包名等信息方法 Android 获取未安装的APK图标、版本号、包名等信息方法是 Android 应用程序开发中的一种常见需求。通过本文,我们将学习如何获取未安装的APK图标、版本号、包...
1. **获取APK文件**:首先,你需要拥有APK文件,这可以通过从Google Play商店下载,或者从第三方应用市场、开发者网站获取。如果你有APK的本地副本,通常会保存在 `/sdcard/Download` 或者自定义的下载路径中。 2. ...
APK包含了应用的代码、资源、元数据等所有必要的组件。当涉及到“apk汉化”时,这意味着我们需要修改APK文件中的语言资源,使其适应中文用户的需求。下面我们将深入探讨如何使用工具进行APK的汉化以及在模拟器上安装...
在Android系统中,APK文件是应用程序的主要载体,它包含了应用的所有代码、资源、资产以及配置文件。"从ROM中提取apk"这个主题涉及到的是如何从设备的Read-Only Memory (ROM) 中获取预装应用的APK文件,这对于开发者...
本文主要探讨了如何在Android模拟器上创建和管理SDCard镜像文件,以及如何使用ADB工具进行文件的推送和拉取。 首先,创建SDCard镜像文件是通过`mksdcard`命令完成的。这个命令允许开发者指定镜像文件的名称(如`...
3. **存储路径**:Android提供不同的存储路径,如`Environment.getExternalStorageDirectory()`获取公共SD卡目录,`getExternalFilesDir()`获取应用私有的外部存储空间。 4. **文件I/O操作**:使用Java或Kotlin的流...
`PackageManager`是Android系统提供的一个类,它负责管理设备上所有应用程序的安装、查询、卸载等操作。获取APK信息通常涉及以下步骤: 1. 创建一个`PackageManager`对象,可以通过上下文`Context`的`...
1.请求服务器获取服务器存储的版本信息 2.通过比对手机端的版本和服务器的版本 3如果要更新需要符合以下判断条件 ... 2)sdcard剩余存储量与apk文件大小的比对 3)是否在wifi环境下 4.下载完成后自动安装
5. **打包与部署**:在打包场景时,要确保所有依赖项(包括PicoVR SDK的库文件)都被正确地包含在apk中。此外,根据不同的设备特性,可能需要调整构建设置,如屏幕分辨率、目标API版本等。 总的来说,通过Unity结合...
在上面的示例代码中,使用了Environment类来获取外部存储目录的路径,例如/sdcard/dictionary目录。 知识点9:Android中的数据库路径 在Android中,数据库路径是一种非常重要的编程技术。在上面的示例代码中,使用...
这表明,提供的代码可能是作为学习和参考的片段,可能涵盖了上述的一些步骤,但可能不包括所有细节,比如错误处理、权限获取等。 总的来说,这个压缩包可能是为了教学目的,帮助开发者理解如何在安卓应用中处理文件...
首先,`AudioTest.apk`的核心功能是展示一个自定义的ListView,用于显示存储在/mnt/sdcard/路径下mp3和wav格式的音频文件。在Android中,ListView是展示大量数据的常用组件,它允许用户滚动查看多个项目,且可以进行...
- 将APK文件复制到设备的可读写目录,如 `/sdcard/`。 - 编写一个具有root权限的shell脚本,内容包括`pm install -t -r <apk_path>`,其中`-t`表示允许安装测试版应用,`-r`表示替换已存在的应用。 - 使用Java...
综上所述,通过Android的`DownloadManager`服务,我们可以实现应用的自动下载更新,同时结合SD卡文件管理,将APK保存在合适的位置,并在下载完成后进行安装。这是一个实用的功能,可以极大地提升用户体验,尤其是...
米家v5.4.54版本有一个Bug,其日志文件暴露了设备...安装米家v5.4.54版本,登录小米账户并等待设备连接后可以在/sdcard/SmartHome/logs/Plug_Devicemanager中找到名为yyyy-mm-dd.txt的日志文件,在其中搜索 token即可。
fastboot getvar all 获取手机所有信息 fastboot getvar product 获取手机内部版本号(一般为vle或villec2) fastboot getvar cid 获取cid (刷RUU必备啊) fastboot oem get_identifier_token 获取用户标识码(官...
由于Google Play商店可能没有提供该应用,你可能需要从官方网站或者其他安全的第三方应用市场获取APK文件进行安装。安装完成后,打开UltraISO,你可以浏览本地存储,包括SD卡,找到你的中文镜像文件。 在上传镜像...