【问题标题】:java.io.filenotfoundexeption :/storage/sdcard/app.apk open failed Eacces (permission denied)java.io.filenotfoundexeption :/storage/sdcard/app.apk 打开失败 Eacces (权限被拒绝)
【发布时间】:2015-04-04 21:14:13
【问题描述】:

我想将我的 apk 文件从我的应用程序的 de 包复制到外部存储:

类副本:

package com.pfe.bls;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;

import android.os.Environment;

public class Copyapk {
    public static void copy() throws IOException {
        String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
        String fileName = "app.apk";
        FileInputStream inStream = new FileInputStream("/data/data/com.pfe.bls/app.apk");
        FileOutputStream outStream = new FileOutputStream(baseDir + File.separator + fileName);
        FileChannel inChannel = inStream.getChannel();
        FileChannel outChannel = outStream.getChannel();
        inChannel.transferTo(0, inChannel.size(), outChannel);
        inStream.close();
        outStream.close();
    }   

}

l'appel 我的方法在 clicklistener 中的 mainactivity 中:

btn_createApp.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
    try {
                    Copyapk.copy();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });

android 清单中的权限:

 <uses-permission android:name="android.permissions.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.android.vending.BILLING" />
    <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />

【问题讨论】:

    标签: android permissions copy android-external-storage


    【解决方案1】:

    您的数据文件夹存储在哪里? 它是在外部存储还是应用程序存储中。要从应用程序存储目录访问它,您应该使用以下方法

    PackageManager m = getPackageManager();
    String s = getPackageName();
    try {
        PackageInfo p = m.getPackageInfo(s, 0);
        s = p.applicationInfo.dataDir;
        } catch (NameNotFoundException e) {
      Log.w("yourtag", "Error not found ", e);
        }
    

    【讨论】:

    • 使用 String 作为文件输入流的参数
    • 它在应用程序存储“com.pfe.bls”中
    • 好的,那么你应该使用我发布的代码。数据目录的路径将存储在 String 中,您可以将其用于文件输入流。首先尝试查看 String 中返回的路径。
    猜你喜欢
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2012-09-07
    • 2020-11-29
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    相关资源
    最近更新 更多