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
错误的调用。
当我 运行 这个程序(我正在使用 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()
:
file.getParentFile().mkdirs();
这是在尝试创建一个目标目录,该目录是传入目录名 (Environment.getExternalStorageDirectory()
) 的父级加上您生成的文件名。没有添加文件分隔符。由于该父目录是系统控制的目录(并且已经存在),您将无权创建它。稍后在 genVideoUsingMp4Parser()
.
logcat 输出中的回溯应该正确指向导致 EACCESS
错误的调用。