2012-04-13 24 views
0

我有一個問題,我不能從活動類到PhoneStateListener類的數據。如何從活動類中獲取數據到PhoneStateListener類?

爲了更好地理解它的代碼波紋管: -

//這是從那裏我要發送的數據或串類

package net.cellobject.blockingincomingcall; 

import android.app.Activity; 

import android.content.SharedPreferences; 

import android.os.Bundle; 

import android.view.View; 

import android.view.View.OnClickListener; 

import android.widget.Button; 

import android.widget.EditText; 

import android.widget.Toast; 



public class SecondTab extends Activity 

{ 

    EditText e1; 

    Button b1; 

    protected void onCreate(Bundle savedInstanceState) 

    { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.setting); 

     e1=(EditText)findViewById(R.id.edt1); 

     b1=(Button)findViewById(R.id.b1); 



     LoadPreferences(); 



     b1.setOnClickListener(new OnClickListener() 

     { 

      public void onClick(View v) 

      { 

       String msg=e1.getText().toString(); 

       SavePreferences("msg1",msg); 

       LoadPreferences(); 



       if(msg=="") 

       { 



       Toast.makeText(getApplicationContext(), "First 


               Enter the message then save it" 

               ,Toast.LENGTH_LONG).show(); 

        e1.requestFocus(); 

       } 

      } 

     }); 



    } 


    private void LoadPreferences() 

    { 

     SharedPreferences shp= getPreferences(MODE_PRIVATE); 

     String s1=shp.getString("msg1",""); 

     e1.setText(s1); 



    } 

    private void SavePreferences(String key, String msg) 

    { 

     SharedPreferences shp= getPreferences(MODE_PRIVATE); 

     SharedPreferences.Editor editor=shp.edit(); 

     editor.putString(key, msg); 

     editor.commit(); 



    } 

} 

//這就是我想要的類獲取用PhoneStateListener擴展的數據或字符串?

package net.cellobject.blockingincomingcall; 



import java.lang.reflect.Method; 



import android.content.Context; 

import android.media.AudioManager; 

import android.telephony.PhoneStateListener; 

import android.telephony.TelephonyManager; 

import android.util.Log; 



import com.android.internal.telephony.ITelephony; 



public class PhoneCallStateListener extends PhoneStateListener 

{ 

    private Context context;  



    public PhoneCallStateListener(Context context) 

    { 

     this.context = context; 

    } 



    public void onCallStateChanged(int state, String incomingNumber) 

{   

     switch (state) 

     { 

      case TelephonyManager.CALL_STATE_RINGING:    


      AudioManager audioManager = (AudioManager) context. 

               getSystemService(Context.AUDIO_SERVICE); 

       //Turn ON the mute 

       audioManager.setStreamMute(AudioManager.STREAM_RING, true);  



      TelephonyManager telephonyManager = (TelephonyManager) context. 

               getSystemService(Context.TELEPHONY_SERVICE); 

       try { 

        @SuppressWarnings("rawtypes") 



     Class clazz = Class.forName(telephonyManager.getClass().getName()); 



      Method method = clazz.getDeclaredMethod("getITelephony"); 



        method.setAccessible(true); 


    ITelephony telephonyService = (ITelephony) method.invoke(telephonyManager);  

        //Checking incoming call number 


        String incomming=incomingNumber.toString(); 



        if (incomingNumber.equalsIgnoreCase(incomming)) 

        { 

         Log.v("incomming_call",incomming); 




         telephonyService.endCall(); 

             sendSMS(incomming, "I am Busy!!call me latter"); 

        } 


       } catch (Exception e) { 

        e.printStackTrace(); 

       } 


      audioManager.setStreamMute(AudioManager.STREAM_RING, false); 

       break; 

     } 

     super.onCallStateChanged(state, incomingNumber); 

    } 



    private void sendSMS(String incomming, String string) 

    { 

     android.telephony.SmsManager sms=android.telephony.SmsManager.getDefault(); 

     sms.sendTextMessage(incomming, null, string, null, null); 



    } 

} 

請幫我看看它真的很緊急。

回答

0

既然你在這兩個Activity and ReceiverContext你可以使用SharedPreference設置,並獲得兩地數據做什麼的問題..

context.getSharedPreference("name" , MODE_PRIVATE); 
+0

它的工作原理解釋正確,並給我一個簡單但完整的例子 – 2012-04-14 10:47:55

0

IM發佈一個非常簡單的方法來存儲和獲得的喜好,使用這我會解決你的問題有關存儲和檢索偏好。

public class Preferences { 


public static void record(String key,Context context,String value) 
{ 
    SharedPreferences pref=PreferenceManager.getDefaultSharedPreferences(context); 
    SharedPreferences .Editor editor=pref.edit(); 

    editor.putString(key,value); 
    editor.commit(); 


} 
public static String getRecord(String key,Context context) 
{ 
    return PreferenceManager.getDefaultSharedPreferences(context).getString(key,PREF_DEFAULT_VALUE); 

} 

}

相關問題