Есть ли способ получить все рингтоны телефона с помощью flutter и установить выбранный в качестве мелодии звонка по умолчанию для моего приложения?
заранее спасибо
Есть ли способ получить все рингтоны телефона с помощью flutter и установить выбранный в качестве мелодии звонка по умолчанию для моего приложения?
заранее спасибо
Мне удалось сделать это с помощью собственного кода
Сначала вы должны создать эти вещи на стороне Flutter.
// here where your ringtones will be stored
List<Object?> result = ['Andromeda'];
// this is the channel that links flutter with native code
static const channel = MethodChannel('com.example.pomo_app/mychannel');
// this method waits for results from the native code
Future<void> getRingtones() async {
try {
result = await channel.invokeMethod('getAllRingtones');
} on PlatformException catch (ex) {
print('Exception: $ex.message');
}
}
Знайте, что вам нужно реализовать собственный код. Перейдите на MainActivity.kt
// add the name of the channel that we made in flutter code
private val channel = "com.example.pomo_app/mychannel"
// add this method to handle the calls from flutter
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, channel)
.setMethodCallHandler { call, result ->
when (call.method) {
"getAllRingtones" -> {
result.success(getAllRingtones(this))
}
// this function will return all the ringtones names as a list
private fun getAllRingtones(context: Context): List<String> {
val manager = RingtoneManager(context)
manager.setType(RingtoneManager.TYPE_RINGTONE)
val cursor: Cursor = manager.cursor
val list: MutableList<String> = mutableListOf()
while (cursor.moveToNext()) {
val notificationTitle: String = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX)
list.add(notificationTitle)
}
return list
}
вот и все, надеюсь, это будет полезно. любые вопросы, дайте мне знать.
вы можете обратиться по этой ссылке pub.dev/packages/flutter_ringtone_player
Я пробовал, но он играет по умолчанию. вместо этого я хочу получить их все и позволить пользователю выбирать, какой он хочет.
тогда я думаю, что вам нужно использовать MethodChannel для написания кода для конкретной платформы, чтобы получить llst.
спасибо, чувак, я так и сделаю.
рада помочь...