gpt4 book ai didi

java - 为什么添加一个空的 for 循环可以修复此代码?

转载 作者:行者123 更新时间:2023-11-29 03:37:22 26 4
gpt4 key购买 nike

我正在尝试播放用户选择的铃声。

当我使用这段代码时:

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 不为空,铃声播放...

谁能解释这里发生了什么,以及我应该怎么做才能避免这种黑客攻击?

谢谢

最佳答案

RingtoneManager has two constructors .其中一个接受上下文,另一个接受 Activity 。根据文档,采用 Activity 的那个将为您管理光标。接受 Context 的不会。

如果文档可信,听起来您的 this 不是 Activity,因此,您获得的 RingtoneManager 实例不管理光标,而是期待您调用 getCursor()

关于java - 为什么添加一个空的 for 循环可以修复此代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14803713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com