Ringtone.getTitle(Context) liefert Dateinamen

  • Moin,


    ich hab mal wieder eine Frage.
    In meiner App möchte ich ein akustisches Signal ausgeben. Ergo habe ich mir eine RingtonePreference eingebaut.
    Da kann ich auch schön auswählen und tun und lassen was ich will.


    Der Übersicht halber möchte ich in der Liste mit den Preferences auch den aktuellen Namen des gewählten Klingeltons anzeigen lassen.


    Nun, das klappt nicht.
    Mein Ansatz liefert mir immer den Dateinamen des Klingeltons zurück.

    Java
    Ringtone theTone = RingtoneManager.getRingtone(getActivity(), Uri.parse(stringFromSharedUserDefaults);
    String title = theTone.getTitle(getActivity());


    LogCat spuckt keinerlei Fehler aus, ich habe die "android.permission.READ_EXTERNAL_STORAGE" im Manifest gesetzt.
    Dennoch bekomme ich nur den Titel zurück. "ringtone" für den Defaultwert sowie Ziffern für die anderen Klingeltöne.
    Das sieht natürlich doof aus.


    Jetzt erzählt mir die Dokumentation noch Folgendes:

    Zitat

    Looks in media content provider. If not in either, uses the filename.


    Gut, fein, okay. Scheinbar ist die Datei nicht im Media Content Provider bekannt – aber warum zeigen dann die Settings, zeigt dann der RingtonePicker die korrekten Titel an?


    Was muss ich tun, damit ich den Titel des Klingeltons als String bekomme, um ihn anzeigen zu können?

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • "content://media/internal/audio/media/41" (Andromeda)
    "content://media/internal/audio/media/47" (Hydra)
    "" (Keine)
    "content://settings/system/ringtone" (Standard-Klingelton)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Hast du es mal mit dem Intent vom RingtonManager versucht?
    Werden die auch Richtig geparst?
    Hast du es mal über dem Cursor versucht?
    Normal sollte dein Code richtig sein. Ich finde da auch keinen Fehler...


    Vielleicht solltest du auch mal ein paar Permissions testen ;)

    Java
    <uses-permission android:name="android.permission.WRITE_SETTINGS" ></uses-permission>
          <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" ></uses-permission>
          <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" ></uses-permission>

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

    Einmal editiert, zuletzt von Kogoro-Christopher ()

  • 1) Nein. Die Auswahl passiert ja über die RingtonePreference. Das bedeutet, dass sich das System schon um alles kümmert. In eben jenem Auswahldialog stehen auch die korrekten Bezeichnungen.


    2) Ich bekomme ein gültiges Objekt vom Typ Ringtone zurück und kann den erfolgreich abspielen. Klingt für mich nach einem korrekten Parsing.


    3) Nein. Wie würde ich das tun?


    4) Ich hantiere nicht in der Gerätekonfiguration herum. Insofern dürften diese Permissions unnötig sein. Sie einzubauen ändert auch nichts.


    Erkenntnis: In einem anderen Fragment als dem PreferenceFragment läuft es.
    Dann sehe ich mal von getActivity() ab und leg mir eine Referenz auf die angehängte Activity an.
    Vielleicht ändert das was. :)


    //Nachtrag
    Ejup, das war's. Da referenzierte jemand die falsche Activity. Mit dem jetzigen Setup geht es. Erst mal. ^^

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

    Einmal editiert, zuletzt von Marco Feltmann ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!