2012-04-13 21 views
0

あるプロセスから別のプロセスに文字列を取得できません。あるプロセスから別のプロセスに文字列を渡すことができません

私はすでにこの問題にIntentを使用していますが、私の問題は、その文字列を取得したいクラスがActivityではなくPhoneCallListenerを拡張していることです。私の問題をよりよく理解するため

は、ここのコードです:

// this is the class from where i want to send a string 
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(); 
    } 
} 

// this is the class where i want to get the string 
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); 
    } 
} 

答えて

関連する問題