2012-10-26 26 views
2

我有一個BroadcastReceiver,我知道如何拒絕調用。但我需要幫助拒接來電,當我按下返回按鈕,因爲我有某種在我的代碼錯誤的...通過按回退按鈕我想拒絕android調用

public class CallReceiveD extends BroadcastReceiver { 
    private ITelephony telephonyService; 
    public String phoneNumber; 
    public Bundle extras; 
    public TelephonyManager tm; 
    public Intent i; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     i=intent; 
     extras = intent.getExtras(); 
     if (extras != null) 
     { 
      String state = extras.getString(TelephonyManager.EXTRA_STATE); 

      if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) 
      { 
       phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
       Toast toast= Toast.makeText(context,phoneNumber, Toast.LENGTH_LONG);toast.show(); 
       tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
       try { 
        Class c = Class.forName(tm.getClass().getName()); 
        Method m = c.getDeclaredMethod("getITelephony"); 
        m.setAccessible(true); 

        telephonyService = (ITelephony) m.invoke(tm); 
        // telephonyService.endCall(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 

    //@Override 
    public void onBackPressed() { 
     telephonyService.endCall(); 
     return; 
    } 
} 

我的清單文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="denza12Des.call" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="14" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:label="@string/app_name" 
      android:name=".Call2BackActivity" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name=".CallReceiveD"> 
      <intent-filter android:priority="99999"> 
       <action android:name="android.intent.action.PHONE_STATE"/> 
      </intent-filter> 
     </receiver> 
     </application> 
    <uses-permission android:name="android.permission.READ_CONTACTS"/> 
    <uses-permission android:name="android.permission.WAKE_LOCK"/> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
    <uses-permission android:name="android.permission.CALL_PHONE"/> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
</manifest> 
+1

據我所知,唯一的事情,你可以處理返回按鈕的點擊處於Activity(GUI)中。在廣播....我認爲你是運氣不好。 – user370305

+0

覆蓋Call2BackActivity您的onBackPressed方法。 –

+0

我相信,後臺應用程序只能接收CAMERA和MENU鍵碼。 –

回答

0

據我所知你不能使用你正在使用的後退按鈕來拒絕通話,但後退按鈕按下功能,我確定,它應該工作,如果你使用它,而不是在廣播接收onReceive