android 情景模式来电铃声分析(二)

http://blog.csdn.net/jkkjklmn/article/details/6959686



DefaultRingtonePreference单击后出现的是一个AlertDialog,但是在DefaultRingtonePreference没看见任何构造Dialog的信息,显然构建在父类RingtonePreference中,

在RingtonePreference.java中:
[java] view plain copy
  1. protected void onClick() { //注意这对DefaultRingtonePreference单机事件左的处理有跳转  
  2.         // Launch the ringtone picker  
  3.         Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);  
  4.         onPrepareRingtonePickerIntent(intent);  
  5.         getPreferenceManager().getActivity().startActivityForResult(intent, mRequestCode);  
  6. }  


这里的startActivityForResult就跳转到了RingtonePickerActivity.java文件里面,

在RingtonePickerActivity.java中:
[java] view plain copy
  1. public void onClick(DialogInterface dialog, int which) {  
  2. Log.i(TAG,"------onClick----");  
  3. boolean positiveResult = which == DialogInterface.BUTTON_POSITIVE;  
  4.   
  5. // Stop playing the previous ringtone  
  6. mRingtoneManager.stopPreviousRingtone();  
  7.   
  8. if (positiveResult) {  
  9.     Intent resultIntent = new Intent();  
  10.     Uri uri = null;  
  11.       
  12.     if (mClickedPos == mDefaultRingtonePos) {  
  13.         // Set it to the default Uri that they originally gave us  
  14.         uri = mUriForDefaultItem;  
  15.     } else if (mClickedPos == mSilentPos) {  
  16.         // A null Uri is for the 'Silent' item  
  17.         uri = null;  
  18.     } else {  
  19.         uri = mRingtoneManager.getRingtoneUri(getRingtoneManagerPosition(mClickedPos));  
  20.     }  
  21.   
  22.     resultIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, uri);  
  23.     setResult(RESULT_OK, resultIntent);  
  24. else {  
  25.     setResult(RESULT_CANCELED);  
  26. }  


会把当前选中的那个铃声的URI返回给在RingtonePreference.java,

你可能感兴趣的:(Android)