寻找问题代码
进过反复的调试与观察logcat打印的报错信息,我找到了错误的位置。
在playVideo(String strPath)函数中的 mediaPlayer.setDataSource(strPath);
很明显,文件地址没有问题,但报错信息却打印了这样一行信息:
java.io.FileNotFoundException: /sdcard/bbb.3gp: open failed: EFAULT (Bad address)
我打开虚拟机的文件夹目录,发现没有问题,文件存在,并且可以打开。
思考解决办法
我想到的第一个办法是搜索“open failed: EFAULT (Bad address)”,但没有得到有效的信息。
我怀疑是权限问题导致程序无法运行。我的想法是正确的,的确是权限问题。我在配置文件AndroidManifest中添加了关于文件读写权限的两行代码。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
这样还不够,还需要在虚拟机内进行相关的设置。
第一步:打开虚拟机的设置
第二步:打开应用与通知目录
第三步:打开“查看全部xx个应用”
第四步:选择Sample_2_12
第五步:选择权限
第六步:设置相关权限
问题解决,运行调试
成功运行的样子