我正在尝试播放用户选择的铃声。
当我使用此代码时:
RingtoneManager ringtoneManager = new RingtoneManager(this);
Uri uri = ringtoneManager.getRingtoneUri(position);
if(uri == null) {
Log.d("ALARM", "uri is null");
}
try {
mediaPlayer.setDataSource(getApplicationContext(), uri);
mediaPlayer.prepare();
mediaPlayer.setLooping(true);
mediaPlayer.start();
} catch (Exception e) {
// Handle exception
}
我得到“uri is null”并且没有任何反应,但是如果我像这样预先放入一个空的for循环:
for(int i = 0; i < ringtoneManager.getCursor().getCount(); ++i) {
//WTF
}
RingtoneManager ringtoneManager = new RingtoneManager(this);
Uri uri = ringtoneManager.getRingtoneUri(position);
if(uri == null) {
Log.d("ALARM", "uri is null");
}
try {
mediaPlayer.setDataSource(getApplicationContext(), uri);
mediaPlayer.prepare();
mediaPlayer.setLooping(true);
mediaPlayer.start();
} catch (Exception e) {
// Handle exception
}
uri 不为空,铃声播放...
谁能解释这里发生了什么,以及我应该做些什么来避免这种黑客攻击?
谢谢