React Native RingtoneManager - PullRequest
       10

React Native RingtoneManager

0 голосов
/ 20 апреля 2019

Я использую https://github.com/millerbennett/react-native-ringtone-manager

Но, к сожалению, RingtoneManager.getRingtones (RingtoneManager.TYPE_ALL) всегда возвращает 'undefined'.

У меня нет ошибки, кто-нибудь знает что-нибудь об этой проблеме?

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

EDIT

Я вернулся к этой проблеме.

Я не понимаю, почему это не работает.

Я прочитал https://github.com/millerbennett/react-native-ringtone-manager и сравни с кодом менеджера и не нашел никаких проблем.

Фактически сам объект RingtoneManager помечен undefined .

EDIT

Так вот мой код:

import React from 'react';
import { Text, View} from 'react-native';
import RingtoneManager from 'react-native-ringtone-manager';


export default class FormRingtones extends React.Component {

static navigationOptions = {
  title: 'Rings',
};
constructor(props) {
super(props);

}
rings;

componentDidMount() {
this.getRings();
}

getRings() {
console.log("1 : " + RingtoneManager);
 this.rings =  RingtoneManager.getRingtones(RingtoneManager.TYPE_ALL);
 if(this.rings != null) {this.rings = this.rings.map((item,index) =>{<Text>{item.title}</Text>})};
   console.log("2 " + this.rings.length);

}

render() {   
return (
  <View>
    <View >
      {this.rings}
    </View>
  </View>
)
};
}

Я только что установил последнюю версию, как упомянуто в комментарии, и теперь приложение показывает приятную ошибку 'Unkown' и ничего больше в инструментах отладки ...

Очистка кеша и перезапуск всех инструментов спасли меня.

Но теперь у меня есть [объект Object] для RingtoneManager и undefined для колец ...

Спасибо за вашу помощь.

EDIT

Извините, у меня нет времени публиковать свое решение раньше.

Проблема в том, что getRingtones () просто пуста в реакции-нативном-рингтоне-менеджере .... это довольно раздражает, когда вы устанавливаете этот компонент только для этого.

Ну, что я сделал:

В node_modules \ реагировать-нативный-рингтон-менеджер \ android \ src \ main \ java \ com \ реагировать на библиотеку , в RNRingtoneManagerModule.java :

@ReactMethod
public void getRingtones(Callback successCallback) {
    getRingsByType(RingtoneManager.TYPE_ALL, successCallback);
}

@ReactMethod
public void getRingsByType(int ringtoneType, Callback successCallback)          {
    RingtoneManager manager = new RingtoneManager(this.reactContext);
    manager.setType(ringtoneType);
    Cursor cursor = manager.getCursor();
    WritableMap data = Arguments.createMap();

    while (cursor.moveToNext()) {
        String notificationTitle = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX);
        Uri notificationUri =Uri.parse(cursor.getString(RingtoneManager.URI_COLUMN_INDEX) + "/" + cursor.getString(RingtoneManager.ID_COLUMN_INDEX));
        data.putString(notificationTitle, notificationUri);

    }
    successCallback.invoke(data);
}

А теперь все работает нормально, я могу перечислить мелодии звонка по типу, воспроизводить их звук и т. Д. *

Это первый раз в моей жизни, когда я устанавливаю что-то, что я должен написать после:)

...