mp4prasser 异常 java.io.IOException:打开 failed:EACCES(权限被拒绝)

mp4prasser exception java.io.IOException: open failed:EACCES (Permission denied)

当我 运行 这个程序(我正在使用 mp4prasser 库)时,我收到一个异常:

java.io.IOException: open failed:EACCES (Permission denied)

但在清单中我设置了权限:

<uses-permission  android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

这是代码(API 17):

public class MainActivity extends AppCompatActivity {
Button mButton;
String Path;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mButton=(Button)findViewById(R.id.button);
    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                Path= Environment.getExternalStorageDirectory().toString()
                +File.separator+"AAAATAG"+File.separator+"abcde.mp4";
                startTrim(Path,Environment.getExternalStorageDirectory().toString(),50000,100000);
            } catch (IOException e) {
                Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
            }
        }
    });



}

查看函数的代码startTrim()http://pastebin.com/LDjn3Y7f

请检查您是否将用户权限放置在正确的位置?其实我犯过一次这个错误,花了很长时间才改正。

<manifest> 
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

          ...

        <application>
            ...
              <activity> 
                    ...
              </activity

        </application>
</manifest> 

您应该查看 logcat 输出以进行验证,但这很可能是因为 startTrim():

的这一行(在您的 pastebin 中查看)
file.getParentFile().mkdirs();

这是在尝试创建一个目标目录,该目录是传入目录名 (Environment.getExternalStorageDirectory()) 的父级加上您生成的文件名。没有添加文件分隔符。由于该父目录是系统控制的目录(并且已经存在),您将无权创建它。稍后在 genVideoUsingMp4Parser().

中进行了相同的调用

logcat 输出中的回溯应该正确指向导致 EACCESS 错误的调用。