2012-03-06 138 views
-4

我在Android中使用阻止呼叫並將短消息發回給呼叫者的項目。
我在這裏搜索全部。但是那些代碼不起作用。我需要幫助。 我使用的是Android 2.2呼叫阻止併發回短信

+0

第一,在這裏把你的代碼,看看有什麼是錯的,第二,你不能阻止Android的一個電話,只接聽和關閉。 – 2012-03-06 08:02:53

+0

我的應用程序正在阻止呼叫並向呼叫者返回消息,說明阻止呼叫的原因...如果無法阻止呼叫,如何避免呼叫。 – user121 2012-03-08 05:34:14

+0

Id ont知道如何以編程方式關閉呼叫 – user121 2012-03-08 07:35:49

回答

1

使用此前的短信管理

Button bttsendsms; 

公共無效的onCreate(捆綁savedInstanceState) {

super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    bttsendsms =(Button)findViewById(R.id.button1); 
    bttsendsms.setOnClickListener(new View.OnClickListener() 
     { 

     public void onClick(View v) { 
      Toast.makeText(SmsActivity.this, "hello", 6000).show(); 
      sendSMS("5556","hello friends"); 
      sendSMS("5558","hello friends"); 
     } 
    }); 
    } 
    private void sendSMS(String phoneNumber,String message) 
    { 
     SmsManager sms=SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber,null,message,null,null); 
    } 
} 
1

試試這個代碼吧....這是工作爲我工作我正在開發相同的應用程序。 在oncreate方法中使用此代碼。

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
     PhoneStateListener callStateListener = new PhoneStateListener() { 
      public void onCallStateChanged(int state, String incomingNumber) { 
       // React to incoming call. 

      // number = PhoneNumberUtils.formatNumber(incomingNumber); 
      number = incomingNumber; 
      // If phone ringing 
      if (state == TelephonyManager.CALL_STATE_RINGING) { 



      new LoadStuff().execute(incomingNumber, message); 
      boolean isEnabled = Settings.System.getInt(
       getContentResolver(), 
     Settings.System.AIRPLANE_MODE_ON, 0) == 1; 

    if (!isEnabled) { 
     Settings.System.putInt(getContentResolver(), 
          Settings.System.AIRPLANE_MODE_ON, 
             isEnabled ? 0 : 1); 

           // Post an intent to reload 
           Intent intent = new Intent(
             Intent.ACTION_AIRPLANE_MODE_CHANGED); 
           intent.putExtra("state", !isEnabled); 
           sendBroadcast(intent); 
          } 

         } 
      } 
      // If incoming call received 
      if (state == TelephonyManager.CALL_STATE_OFFHOOK) { 

      } 

      if (state == TelephonyManager.CALL_STATE_IDLE) { 
       boolean isEnabled = Settings.System.getInt(
         getContentResolver(), 
         Settings.System.AIRPLANE_MODE_ON, 0) == 1; 
       if (isEnabled) { 
        Settings.System.putInt(getContentResolver(), 
          Settings.System.AIRPLANE_MODE_ON, isEnabled ? 0 
            : 1); 

        // Post an intent to reload 
        Intent intent = new Intent(
          Intent.ACTION_AIRPLANE_MODE_CHANGED); 
        intent.putExtra("state", !isEnabled); 
        sendBroadcast(intent); 

       } 

      } 
     } 

    }; 
    telephonyManager.listen(callStateListener, 
      PhoneStateListener.LISTEN_CALL_STATE); 

} 

,並使用外onCreate方法的代碼

public class LoadStuff extends AsyncTask<String, String, Void> { 

     @Override 
     protected Void doInBackground(String... params) { 
      // TODO Auto-generated method stub 
      String number = params[0]; 
      String message = params[1]; 
      boolean error = false; 
      try { 
       SmsManager sms = SmsManager.getDefault(); 
       sms.sendTextMessage(number, null, message, null, null); 

      } catch (IllegalArgumentException e) { 
       error = true; 
      } 

      if (error) { 
       Toast.makeText(getBaseContext(), "SMS SENDING FAILED", 
         Toast.LENGTH_SHORT).show(); 
      } 
      return null; 
     } 

    }