媒体播放器获取数据源错误权限访问文件



我尝试用MediaPlayer播放音乐。 问题是即使我在清单中请求权限,我也没有成功访问 acces 文件

我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nkm.metaextract" >
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

和 Java 代码:

public class MainActivity extends AppCompatActivity {
//public class MetaExtractActivity extends Activity {
ImageView album_art;
TextView album, artist, genre;
MediaPlayer mp;
MediaMetadataRetriever metaRetriever;
byte[] art;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getInit();
File dir =Environment.getExternalStorageDirectory();
File file=new File(dir + File.separator +"Music/Wholesome.mp3");
if (file.exists()) {
genre.setText(file.toString());
Log.i("DEBUG", "Trouvé "+file.toString());
}else {genre.setText("pas trouvé");
Log.i("DEBUG", "pas trouvé");
}
mp = new MediaPlayer();
try {
mp.setDataSource("/storage/emulated/0/Music/Wholesome.mp3");
Log.i("DEBUG", "ok");
artist.setText("ok");
} catch (IOException e) {
e.printStackTrace();
Log.i("DEBUG", "Erreur  "+ e);
artist.setText("pas trouvé");
}

Nota:该文件存在,我可以使用商店应用程序读取它

我试图改变路径"/存储/模拟/0/音乐/健康.mp3"和其他几种方式而不改变

我在哪里测试它是否是我获得的文件: "I/DEBUG: Trouvé/storage/emulated/0/Music/Wholesome.mp3"但就在下一个 "W/System.err: java.io.FileNotFoundException:/storage/emulated/0/Music/Wholesome.mp3 (Permission dedened(">

在我尝试访问的地方,我获得: "I/DEBUG: Erreur java.io.FileNotFoundException:/storage/emulated/0/Music/Wholesome.mp3 (Permission dedened(">

当应用程序启动时,Android 不会要求我访问...和应用无法访问文件。

有人可以帮忙吗?

从 Android 6.0 开始,您必须在运行时请求权限:

https://developer.android.com/training/permissions/requesting

您现在可以做的是转到应用程序的设置,转到权限部分,启用这些权限并重新启动应用程序。如果它不起作用,我会从上面发布的链接中添加运行时权限检查

非常感谢Mariusz。

我加

requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);

而且它很好...

最新更新