Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java.io.filenotfoundexeption:/storage/sdcard/app.apk打开失败的Eacces(权限被拒绝)_Android_Permissions_Copy_Android External Storage - Fatal编程技术网

Android java.io.filenotfoundexeption:/storage/sdcard/app.apk打开失败的Eacces(权限被拒绝)

Android java.io.filenotfoundexeption:/storage/sdcard/app.apk打开失败的Eacces(权限被拒绝),android,permissions,copy,android-external-storage,Android,Permissions,Copy,Android External Storage,我想将我的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

我想将我的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();
    }   

}
我在clicklistener内的主要活动中的方法:

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" />

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

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);
    }

使用字符串s作为fileinputstream的参数。它位于应用程序存储“com.pfe.bls”中。确定后,您应该使用我发布的代码。数据目录的路径将存储在字符串s中,您可以将其用于fileinputstream。首先尝试查看以字符串s返回的路径。