我正在尝试获取应用的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。
如何将此文件保存到我的存储目录。?
答案 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);