2015-01-15 3 views
0

나는이 벨소리 android.v4.preference.fragment을 사용하고 있습니다. 벨소리 환경 설정과 관련된 문제가 있습니다. 아래 코드는 ICS 및 그 이하 버전의 전화기에서 훌륭하게 작동하지만 ICS 이상 전화기에서 중복되는 벨소리 대화 상자를 실행합니다. 벨소리 환경 설정 대화 상자.벨소리 선택기가 작동하지 않습니다

ringtonepref.setOnPreferenceClickListener (새 OnPreferenceClickListener() {

@Override 
public boolean onPreferenceClick(Preference arg0) { 
    // TODO Auto-generated method stub 

    { 
     SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
     String path = settings.getString("prefnotificationTone", "content://settings/system/notification_sound");     

     Uri uri = !TextUtils.isEmpty(path) ? Uri.parse(path) : null; 

     Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 

     //intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION); 
     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL); 
     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, uri); 
     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true); 
     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); 

     getActivity().startActivityForResult(intent, 1000); 
    } 

    return true; 
} 

나는 장치가 ICS를, 즉 및 출시 위 비교하는 또 다른 방법을 시도

case 1000: 
     if (resultCode == Activity.RESULT_OK) 
     { 
      Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); 
      SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); 
      Editor editor = settings.edit(); 
      editor.putString("prefnotificationTone", uri == null ? "": uri.toString()); 
      editor.commit(); 
     } 
     else 
      { 

      } 
     break; 

활동 결과에 다음과 같이 처리하고 있습니다 다른 하나는 사용자 정의 인 텐트를 허용하지만 Jelly bean 및 기타 장치에 대해서는 OnPreferenceChangeListener으로 이벤트가 전달되지 않습니다. 이제는 어떤 도움도 혼동 스럽습니다.

감사합니다.

+0

[this] (http://developer.android.com/reference/android/preference/RingtonePreference.html) 및 [this] (https://github.com/kolavar/android-support-v4)를 찾을 수 있습니다. -preferencefragment/issues/1) 링크가 유용합니다. 그런데 PreferenceFragment가 지원 라이브러리에서 지원되지 않기 때문에 API 레벨 <11, 및 API 레벨 11의 PreferenceFragment에 대해 PreferenceActivity를 실행하는 다른 접근 방식을 사용하고 있습니다. –

+0

안녕하세요, 좋은 생각입니다.하지만 조각, 즉 뷰 페이지가 있습니다. viewpager에서 활동을 시작하는 것이 가능하지 않을 수 있습니까? 제발 마음에 들지 않으면 샘플 코드를 제공 할 수 있습니까? – Naruto

+0

안녕하세요 @DerGolem, 어떤 도움을 기다리고 있습니다. viewfragment를 사용하고 있습니다. 그래서 우리는 그 안의 활동을 바로 사용할 수 없습니까? 사전에 감사합니다 – Naruto

답변

2

이것은 실제로 라이브러리의 워크 플로 버그이며, here을 찾을 수있는 해결 방법 외에도 여러 가지가 있습니다.

+0

그래, 난 그냥이 같은 기본 설정 개체를 만들었습니다'<선호도 \t 안드로이드 : 제목 = "@ 문자열/RING_TONE_SETTING" \t 안드로이드 : 요약 = "@ 문자열/RING_TONE_SETTING_DESCRIPTION" \t 안드로이드 : ringtoneType = "통지" \t 안드로이드 : 지속 = "true"를 \t 안드로이드 : showDefault = "false"를 \t android : key = "prefnotificationTone"/>' 마침내 작동했습니다. 감사합니다. – Naruto

+0

하나 더 도움이 필요합니다. 기본 전화 톤이 기본 톤으로 표시되고 맨 위에 표시됩니다. SMS 톤을 기본 톤으로 설정하고 맨 위에 표시하는 방법? – Naruto

+0

죄송합니다. 나는 그걸 도울 수 없다. –

관련 문제