2012-04-13 58 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); 

} 

}

相关问题