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

手机apk拷贝到sdcard

 
阅读更多

public class CopyAppActivity extends Activity {
 /** Called when the activity is first created. */
 private static final String outFile = "sdcard/backups/"; //备份apk目录
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  try {
   copyFiles();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  setContentView(R.layout.main);

 }

 static String getFileName(String fullName) {
  if (fullName == null) {
   return null;
  }

  int idx = fullName.lastIndexOf('/');
  if (idx == -1) {
   return fullName;
  }

  return fullName.substring(idx + 1);
 }

 public void copyFiles() throws Exception {

  final PackageManager pm = getPackageManager();
  List<ApplicationInfo> allApps = pm.getInstalledApplications(0);
  final List<ApplicationInfo> filteredApps = filterApps(allApps);
  for (int i = 0, size = filteredApps.size(); i < size; i++) {
   ApplicationInfo info = filteredApps.get(i);
   String src = info.sourceDir;//获取apk所在路径
   if (src != null) {
    FileStraeamCopy(src,outFile);
   }
  }
 }

 /*
  * 获取用户安装的软件list
  */
 public static List<ApplicationInfo> filterApps(List<ApplicationInfo> apps) {
  if (apps == null || apps.size() == 0) {
   return apps;
  }

  List<ApplicationInfo> userApps = new ArrayList<ApplicationInfo>();

  for (int i = 0, size = apps.size(); i < size; i++) {
   ApplicationInfo ai = apps.get(i);

   if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
    userApps.add(ai);
   }
  }

  return userApps;

 }

 /**
  * io拷贝
  *
  * @param inFile
  *            源文件
  * @param outFile
  *            目标文件
  * @return
  * @throws Exception
  */
 public static void FileStraeamCopy(String inFile, String outFile)
   throws Exception {

  try {
   File file = new File(outFile); /* 创建临时文件 */
   if (!file.exists())// 如果文件夹不存在创建
   {
    file.mkdir();
   }
   File files = new File(outFile + getFileName(inFile));// 创建文件
   file.getAbsolutePath();
   /* 将文件写入暂存盘 */
   FileOutputStream fos = new FileOutputStream(files);
   byte buf[] = new byte[128];
   InputStream fis = new BufferedInputStream(new FileInputStream(
     inFile), 8192 * 4);
   do {
    int numread = fis.read(buf);
    if (numread <= 0) {
     break;
    }
    fos.write(buf, 0, numread);
   } while (true);
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

}

分享到:
评论
3 楼 luckypen2007 2011-09-07  
我知道了,是因为我的虚拟机创建的时候没有分配空间。。。
2 楼 luckypen2007 2011-09-07  
Permission denied
1 楼 luckypen2007 2011-09-07  
你好,你的manifest.xml最后的权限MOUNT_UNMOUNT_FILESYSTEMS漏了一个字母。。。
我把权限加上去以后,在FileOutputStream fos = new FileOutputStream(files)这一步还是出现no permission的异常,请问楼主有碰到这个问题吗?我是在虚拟机上跑的。。。

相关推荐

    将db文件和apk一起打包

    在上面的示例代码中,使用了openDatabase方法来打开dictionary.db文件,如果该文件不存在,系统会自动创建/sdcard/dictionary目录,并将res\raw目录中的dictionary.db文件复制到/sdcard/dictionary目录中。...

    android端烟雾火焰检测apk,demo

    自己开发的安卓端实时视频烟雾火焰检测apk,基于深度学习,识别率还行。能同时检测出烟雾和火焰,用不同的颜色同时框出烟雾和火焰。...欢迎测试 使用方法: 1:安装apk 2:将model1文件夹拷贝到sdcard目录

    三星可用的 STK.rar

    1、在网上下载对应版本的原始STK.apk文件,将其拷贝到“/sdcard/SystemAppBackup/”里面; 2、在手机上安装“系统程序卸载器 ”(市场上去下载即可); 3、安装后打开软件,选择‘恢复应用’,必须要root. 4、从列表...

    Android实现复制Assets文件到SD卡

    这些文件不会被编译到APK的资源ID中,而是保持其原始状态,需要通过`AssetManager`来访问。`AssetManager`是一个系统服务,可以从应用程序的上下文中获取,通常是通过`Context`的`getAssets()`方法。 要从Assets...

    手机导航软件

    3、下载压缩包,先在电脑上解压得到NaviOne文件夹并拷贝到手机的SD卡根目录下 4、压缩包内安装必看\apk目录下有kldttt-A.apk、kldttt-B.apk、kldttt-C.apk,根据手机型号或外卡名安装(文件管理,看看你的内存卡路径...

    安卓手机刷机步骤.pdf

    然后,格式化手机内置的 8G/16G,并将 ZIP 刷机包和 LidroidROMTools.apk ROM 力桌定制器拷贝到内置根目录,并将 ZIP 包改名为 update.zip。 步骤 13-14:安装 ROM 力桌定制器 安装 LidroidROMTools.apk ROM 力桌...

    android Google地图不能定位问题解决

    adb push app sdcard/temp/ (把您adb目录下app文件夹中的所有内容拷贝到手机sd卡temp目录中) adb shell (看提示符,是不是已经变成$了?) su (嗯,这下变成#了吧?) 好啦,为了防止出错,有经验的同学...

    安卓系统2.3可装的JAVA模拟器直安装版-新版

    4.将要安装的jar文件拷贝到SD卡根目录. 5.安装好后在手机的菜单中就会看到java的程序. 6.双进"java"进入后,就会看到Sdcard目录.这时候点击手机的"Menu"键,在下方的菜单中选择"存储卡"这时候就会列出所有的JAR程序....

    Android实现用代码简单安装和卸载APK的方法

    - 自Android 7.0开始,安装APK不再支持从外部存储直接安装,需要将APK拷贝到内部存储或者使用`FileProvider`来提供访问权限。 - 对于Android 8.0及以上版本,应用安装时可能会遇到后台执行限制,需要在前台服务或者...

    BrowserEclipse-2013.1.13.7z

    android4.0浏览器在eclipse中编译的方法: ...先备份/system/app/Browser.apk和Browser.odex,拷贝到/sdcard即可。 删除/system/app/Browser.apk和Browser.odex,重启机器。 安装BrowserEclipse.apk,查看效果。

    android压力测试Monkey命令1

    5. 从设备拷贝文件到电脑: 使用`adb pull &lt;远程路径&gt; &lt;本地路径&gt;`,如`adb pull /sdcard/Download/file.txt E://`,将设备上的文件拉取到电脑。 6. 查看应用程序信息: - `adb shell ps`列出当前运行的所有进程...

    adb1.0.41windows64.rar

    2. **数据传输**:使用`adb push`和`adb pull`命令可以在电脑与设备之间传输文件,这对于安装APK、拷贝日志或者数据备份非常实用。 3. **进程管理**:`adb shell`命令可以让你进入设备的shell环境,执行各种系统级别...

    新版Android开发教程.rar

    开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了 43 家。 移动手机联盟创始成员: Aplix 、 Ascender 、 Audience 、 Broadcom 、中国移动、 eBay 、 Esmertec 、谷歌、...

    阿里云ossandroid端

    // 文件的常规操作如普通上传、下载、拷贝、删除等,与Data类一致,故这里只给出断点下载和断点上传的demo resumableDownloadWithSpecConfig(); // delay(); // resumableUpload(); // delay(); // ...

Global site tag (gtag.js) - Google Analytics