工程目录:
manifests增加动态权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
MainActivity
package com.example.demo_thirteen;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}else{
fun();
Toast.makeText(this, "Start play music...", Toast.LENGTH_SHORT).show();
}
}
public void fun() {
String basePath = Environment.getExternalStorageDirectory().getPath();
String filePath = basePath + "/music/cc.mp3";
Log.i("zlm", filePath);
mp = new MediaPlayer();
try {
mp.setDataSource(filePath);
mp.prepare();
mp.start();
} catch (IOException e) {
Log.i("zlm", "file path errror or no permission of READ_EXTERNAL_STORAGE");
e.printStackTrace();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
fun();
} else {
Toast.makeText(this, "没有读SD卡权限", Toast.LENGTH_LONG).show();
finish();
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
Toast.makeText(this, "music stop", Toast.LENGTH_SHORT).show();
mp.stop();
mp=null;
}
}
cc.mp3上传至sdcard/Music目录下