2012-03-19 4 views
1

私は着信呼び出し用のSIPアプリケーションを開発しています。AlertDialog着信コールを表示します。そのために私はダイアログと2つのボタンを入れていた受け入れる拒否。このボタンのいずれかを押すとアプリケーションがクラッシュします。ここ異なるクラスのメソッドを使用中にアプリケーションがクラッシュする

は私のクラスマニフェストファイルのコードです。このコードは(incomingCallpage.class)が新しい画面を開きますincomingCallReciever

public class IncomingCallReceiver extends BroadcastReceiver { 
public void onReceive(Context context, Intent intent) { 
    Intent nextpage = new Intent(context, IncomingCallPage.class); 
    nextpage.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(nextpage); 
    mContext = context; 

} 

public void acceptCall() { 
    incomingCall.sendDtmf(9); 
    try { 
     incomingCall.sendDtmf(9); 
     incomingCall.answerCall(200); 
     wtActivity.gototimer("i"); 
    } catch (SipException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    wtActivity.gototimer("i"); 
} 

public void rejectCaLL() { 
    try { 
     incomingCall.endCall(); 
    } catch (SipException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

}
//ため


コードincomingCallpage

public class IncomingCallPage extends Activity { 
    IncomingCallReceiver incomingCallReceiver; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Toast.makeText(IncomingCallPage.this, "Incoming call Page", 5000) 
      .show(); 
    new AlertDialog.Builder(this) 
      .setTitle("Incoming Call") 
      .setMessage("From:242424") 
      .setIcon(R.drawable.phone) 
      .setPositiveButton("Accept", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 

          **incomingCallReceiver.acceptCall();** 
         } 
        }) 
      .setNegativeButton("Reject", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 
          **incomingCallReceiver.rejectCaLL();** 
         } 
        }).show(); 
} 

}

ためのコード


//受信者をmanifest.xmlファイルに登録しました。

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

<uses-feature 
    android:name="android.hardware.sip.voip" 
    android:required="true" /> 

<uses-permission android:name="android.permission.USE_SIP" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 

<uses-feature 
    android:name="android.hardware.wifi" 
    android:required="true" /> 
<uses-feature 
    android:name="android.hardware.microphone" 
    android:required="true" /> 

<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.CALL_PRIVILEGED" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="android.permission.WRITE_CONTACTS" /> 

<application 
    android:debuggable="true" 
    android:icon="@drawable/logo_linphone_57x57" 
    android:label="SIP Dialer" > 
    <activity 
     android:name=".WalkieTalkieActivity" 
     android:configChanges="orientation|keyboardHidden" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".SipSettings" 
     android:label="set_preferences" /> 
    <activity 
     android:name=".dialer" 
     android:label="@string/app_name" /> 
    <activity 
     android:name=".timer" 
     android:label="@string/app_name" /> 
    <activity 
     android:name=".d1" 
     android:label="@string/app_name" /> 
    <activity 
     android:name=".IncomingCallPage" 
     android:label="@string/app_name" /> 

    **<receiver 
     android:name=".IncomingCallReceiver" 
     android:enabled="true" 
     android:label="Call Receiver" > 
     <intent-filter> 
      <action android:name="android.SipDemo.INCOMING_CALL" /> 
     </intent-filter> 
    </receiver>** 
</application> 

while running this code the error is :03-19 06:54:00.137: E/AndroidRuntime(1699):at com.example.android.sip.IncomingCallPage$1.onClick(IncomingCallPage.java:30)

+0

でこれを呼び出す間違いラインからコードを参照して、全体の誤差を与えてください。 – Ruuhkis

+0

ここであなたは初期化しました** incomingCall ** – ngesh

+0

あなたのvar 'incomingCallReceiver'は' onClick'の前にinitedされていません、 'incomingCallReceiver = new IncomingCallReceiver(this);'のようにinitedする必要があります – idiottiger

答えて

1

あなたは、インスタンスを作成したのですか?

incomingCallReceiver=new IncomingCallReceiver(); 

または静的

public static void acceptCall() 

//にあなたの方法を変更し、あなたのIncomingCallPage

IncomingCallReceiver.acceptCall() 
+0

あなたの投稿に感謝します。 acceptcall()メソッドを静的にするとエラーは出ませんが、acceptボタンをクリックしても何も起こりません。呼び出しは呼び出しモードのままです。 – juned