我已经检索了我的设备中安装的所有apk,并且我创建了一个列表,我可以在其中看到它们。点击一个项目,我创建了一个对话框。我会在正面按钮上复制我在sdcard中创建的文件夹中该位置的apk。到目前为止,我尝试过,我可以在toast中显示每个apk的app文件夹和位置,但我不明白如何复制我选择的apk。这是代码
.setPositiveButton("Copy apk", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogapk, int id)
{
// TODO: Implement this method
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List pkapplist = getActivity().getPackageManager().queryIntentActivities(mainIntent, 0);
for (Object o : pkapplist) {
ResolveInfo info = (ResolveInfo) o;
file = new File( info.activityInfo.applicationInfo.publicSourceDir);
Toast.makeText(getActivity(), "Boh "+file, Toast.LENGTH_SHORT).show();
}
try
{
process = Runtime.getRuntime().exec("cp " + file + " " + customfolder);
}
catch (IOException e)
{
}
}
});
自定义文件夹是我以这种方式创建的文件夹
final File customfolder = new File(Environment.getExternalStorageDirectory().toString()+File.separator+"BackupApk");
实际上它创建了一个文件,而不是一个应用程序本身大小的文件夹..我不知道它到底在做什么!!谢谢。如果需要适配器让我知道
答案 0 :(得分:0)
1)您是否在Manifest文件中声明了"android.permission.WRITE_EXTERNAL_STORAGE"
权限?
2)Android系统命令中缺少cp
命令:/system/bin/sh: cp: not found
3)创建customfolder
时,您遗漏了customfolder.mkdirs()
语句实际上在外部存储上创建此自定义目录
4)尝试关注solution
<强>更新强>
试图实现你的逻辑。
以下解决方案(取自前面提到的链接)证明自己是工作的(它实际上将APK文件备份到 / sdcard ):
FileInputStream inStream = new FileInputStream(file.getAbsolutePath());
FileOutputStream outStream = new FileOutputStream(backupDir.getAbsolutePath() + File.separator + file.getName());
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
inStream.close();
outStream.close();
答案 1 :(得分:0)
File Folder=new File(Environment.getExternalStorageDirectory(),"YourFolder");
if(!Folder.exists()){
Folder.mkdirs();
}
这是检查n create
的代码