我是製作音樂應用程序,並且我創建了一個從外部存儲器加載歌曲的功能。我給了棉花糖的運行時權限,但問題是,只要我授予許可歌曲不顯示。但是,當我停止應用程序並重新打開它時,我可以看到顯示的歌曲。我希望在給予運行時權限後立即顯示歌曲(從外部存儲器讀取)。謝謝!只要給出運行時權限,歌曲就不會立即顯示
Songs.java片段類:
public class Songs extends Fragment {
private static final String TAG = "Songs";
RecyclerView recyclerView;
private ArrayList<SongInfoModel> SongList = new ArrayList<SongInfoModel>();
SongAdapter songAdapter;
SongInfoModel s;
ScaleInAnimationAdapter alphaAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.songs_activity, container, false);
recyclerView = (RecyclerView)view.findViewById(R.id.recyclerView);
LinearLayoutManager linearLayoutManager = new
LinearLayoutManager(getContext());
recyclerView.setLayoutManager(linearLayoutManager);
songAdapter = new SongAdapter(getContext(), SongList);
alphaAdapter = new ScaleInAnimationAdapter(songAdapter);
alphaAdapter.setDuration(1000);
alphaAdapter.setInterpolator(new OvershootInterpolator());
alphaAdapter.setFirstOnly(false);
recyclerView.setAdapter(alphaAdapter);
Collections.sort(SongList, new Comparator<SongInfoModel>(){
public int compare(SongInfoModel a, SongInfoModel b){
return a.getSongName().compareTo(b.getSongName());
}
});
loadSongs();
return view;
}
public void loadSongs(){
ContentResolver resolver = getActivity().getContentResolver();
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Audio.Media.IS_MUSIC+"!=0";
Cursor cursor = resolver.query(uri,null,selection,null,null);
if(cursor != null){
if(cursor.moveToFirst()){
do{
String name = cursor.getString(cursor.getColumnIndex
(MediaStore.Audio.Media.DISPLAY_NAME));
String artist = cursor.getString(cursor.getColumnIndex
(MediaStore.Audio.Media.ARTIST));
String url = cursor.getString(cursor.getColumnIndex
(MediaStore.Audio.Media.DATA));
long duration = cursor.getLong(cursor.getColumnIndex
(MediaStore.Audio.Media.DURATION));
s = new SongInfoModel(name,artist,null,null,url,duration,null);
SongList.add(s);
}while (cursor.moveToNext());
}
cursor.close();
songAdapter = new SongAdapter(getContext(),SongList);
}
private void checkUserPermission(){
if(Build.VERSION.SDK_INT>=23){
if(ActivityCompat.checkSelfPermission(getContext(),
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]
{Manifest.permission.READ_EXTERNAL_STORAGE},123);
return;
}
}
loadSongs();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[]
permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 123:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
loadSongs();
}else
Toast.makeText(getContext(), "Permission
Denied",Toast.LENGTH_SHORT).show();
checkUserPermission();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions,
grantResults);
}
}
}
顯示你的代碼你做了什麼 – UltimateDevil
@Sebin保羅一旦授予權限,使用介質存儲和ContentResolver的把它拿來,我想這是正在做,請確保您通知我已經發布了RecyclerView/ListView的 –
代碼,你會關心它,並告訴什麼是錯的:( –