Я хочу получить доступ к своим системным рингтонам в флаттере

avatar
zaynOm
18 ноября 2021 в 11:32
328
1
1

Есть ли способ получить все рингтоны телефона с помощью flutter и установить выбранный в качестве мелодии звонка по умолчанию для моего приложения?

заранее спасибо

Источник
Diwyansh
18 ноября 2021 в 12:05
0

вы можете обратиться по этой ссылке pub.dev/packages/flutter_ringtone_player

zaynOm
18 ноября 2021 в 14:03
0

Я пробовал, но он играет по умолчанию. вместо этого я хочу получить их все и позволить пользователю выбирать, какой он хочет.

Diwyansh
18 ноября 2021 в 16:02
0

тогда я думаю, что вам нужно использовать MethodChannel для написания кода для конкретной платформы, чтобы получить llst.

zaynOm
21 ноября 2021 в 11:29
0

спасибо, чувак, я так и сделаю.

Diwyansh
22 ноября 2021 в 07:46
0

рада помочь...

Ответы (1)

avatar
zaynOm
24 ноября 2021 в 20:49
1

Мне удалось сделать это с помощью собственного кода

  1. Сначала вы должны создать эти вещи на стороне 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');
        }
      }
    
    
  2. Знайте, что вам нужно реализовать собственный код. Перейдите на 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
    }
    

вот и все, надеюсь, это будет полезно. любые вопросы, дайте мне знать.