如何将应用程序的apk写入文件夹

时间:2016-12-12 13:01:01

标签: java android apk

我正在尝试获取应用的APK并将其保存在存储目录中的文件夹中。我有apk但我无法将其保存到我想要的文件夹。

以下是我生成apk文件的方法:

    final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    List<ResolveInfo> apps = getPackageManager().queryIntentActivities(mainIntent, 0);

    for (ResolveInfo info : apps) {
            File fileToSave = new File(info.activityInfo.applicationInfo.publicSourceDir)
    }

以下是保存APK文件的代码,我在该文件中传递相同的文件进行保存:

private void createDirectoryAndSaveFile(File fileToSave) {
        try {
            String folderName = "MyCreatedFolder";

            File folder = new File(Environment.getExternalStorageDirectory() +
                    File.separator + folderName);
            boolean success = true;
            if (!folder.exists()) {
                success = folder.mkdirs();
            }
            if (success) {
                File path = new File(context.getFilesDir(), folderName);
                File mypath = new File(path, fileToSave.getName());
                new BufferedWriter(new FileWriter(mypath));
                Toast.makeText(context, "Created", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(context, "Failed", Toast.LENGTH_LONG).show();
            }
        } catch (Exception e) {
            System.out.println("----" + e.getLocalizedMessage());
        }
    }

fileToSave是APK文件,但写入时没有说明这样的文件或目录。

  

java.io.FileNotFoundException:.... / MyCreatedFolder / base.apk:open   失败:ENOENT(没有这样的文件或目录)

所有必需的权限都存在,并且不需要运行时权限,因为TargetSDK为21。

如何将此文件保存到我的存储目录。?

1 个答案:

答案 0 :(得分:0)

尝试使用此代码,因为您要创建一个文件夹(如果它不存在),然后写入您创建/指定的同一个文件夹,因此省略了这一行import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.onClickListener() { @Override public void onClick(View v) { goToMain2Activity(); } }); } private void goToMain2Activity() { Intent intent = new Intent(this, Main2Activity.class); startActivity(intent); } ,而是写了该文件夹的路径我们创造了。

File path = new File(context.getFilesDir(), folderName);