ImRingtonePreference.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:3k
源码类别:

android开发

开发平台:

C/C++

  1. /**
  2.  * Copyright (C) 2008 Esmertec AG.
  3.  * Copyright (C) 2008 The Android Open Source Project
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  6.  * use this file except in compliance with the License. You may obtain a copy
  7.  * of the License at
  8.  *
  9.  * http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  13.  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  14.  * License for the specific language governing permissions and limitations
  15.  * under the License.
  16.  */
  17. package com.android.im.app;
  18. import com.android.im.service.ImServiceConstants;
  19. import android.app.Activity;
  20. import android.content.Context;
  21. import android.content.Intent;
  22. import android.net.Uri;
  23. import android.preference.RingtonePreference;
  24. import android.provider.Im;
  25. import android.text.TextUtils;
  26. import android.util.AttributeSet;
  27. import android.util.Log;
  28. /**
  29.  * RingtonePreference subclass to save/restore ringtone value from ImProvider.
  30.  */
  31. public class ImRingtonePreference extends RingtonePreference {
  32.     private long mProviderId;
  33.     public ImRingtonePreference(Context context, AttributeSet attrs) {
  34.         super(context, attrs);
  35.         Intent intent = ((Activity)context).getIntent();
  36.         mProviderId = intent.getLongExtra(ImServiceConstants.EXTRA_INTENT_PROVIDER_ID, -1);
  37.         if (mProviderId < 0) {
  38.             Log.e(ImApp.LOG_TAG,"ImRingtonePreference intent requires provider id extra");
  39.             throw new RuntimeException("ImRingtonePreference must be created with an provider id");
  40.         }
  41.     }
  42.     @Override
  43.     protected Uri onRestoreRingtone() {
  44.         final Im.ProviderSettings.QueryMap settings = new Im.ProviderSettings.QueryMap(
  45.                 getContext().getContentResolver(), mProviderId, 
  46.                 false /* keep updated */, null /* no handler */);
  47.         
  48.         String uri = settings.getRingtoneURI();
  49.         if (Log.isLoggable(ImApp.LOG_TAG, Log.VERBOSE)) {
  50.             Log.v(ImApp.LOG_TAG, "onRestoreRingtone() finds uri=" + uri + " key=" + getKey());
  51.         }
  52.         
  53.         if (TextUtils.isEmpty(uri)) {
  54.             return null;
  55.         }
  56.         
  57.         Uri result = Uri.parse(uri);
  58.         
  59.         settings.close();
  60.         
  61.         return result;
  62.     }
  63.     @Override
  64.     protected void onSaveRingtone(Uri ringtoneUri) {
  65.         final Im.ProviderSettings.QueryMap settings = new Im.ProviderSettings.QueryMap(
  66.                 getContext().getContentResolver(), mProviderId, 
  67.                false /* keep updated */, null /* no handler */);
  68.         
  69.         // When ringtoneUri is null, that means 'Silent' was chosen
  70.         settings.setRingtoneURI(ringtoneUri == null ? "" : ringtoneUri.toString());
  71.         settings.close();
  72.     }
  73. }