我試圖在每次開始通話或每次接到來電時顯示一條消息。我製作了一個適用於INCOMING呼叫但不適用於OUTGOING呼叫的代碼。 我讀了關於這個問題的不同職位。Android - INCOMING&OUTGOING來電
誰能告訴我,爲什麼這下面的代碼演示了我(當然這個代碼沒有做的一切,我以前mentionned):
- 「離開」當我接到一個電話
- 「來電」,那麼「離開」時,我開始呼叫
/*從MainActivity */
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
context.startService(new Intent(context, SvcCall.class));
}
/*從SvcCall */
public class SvcCall extends Service
{
private static final String ACTION_OUT = "android.intent.action.PHONE_STATE";
private static final String ACTION_IN = "android.intent.action.NEW_OUTGOING_CALL";
private CallBr br_call;
@Override
public void onCreate()
{
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
final IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_OUT);
filter.addAction(ACTION_IN);
this.br_call = new CallBr();
this.registerReceiver(this.br_call, filter);
return (START_STICKY);
}
public class CallBr extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(ACTION_IN))
Toast.makeText(context, "INCOMING", Toast.LENGTH_LONG).show();
else if (intent.getAction().equals(ACTION_OUT))
Toast.makeText(context, "OUTGOING", Toast.LENGTH_LONG).show();
}
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}
/*來自清單*/
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
只要看一眼的文字:沒有'ACTION_IN'和'ACTION_OUT'的定義逆轉嗎? – chr
+1。謝啦。我猜這就是它。要檢查它。但我決定註冊兩個不同的廣播接收器。 – frontal
一旦你得到它的工作,包括第二個問題(當你開始呼叫時兩個敬酒),發佈更正作爲答案並接受它。這樣做完全可以,所以如果他們在相同的問題上出行,其他人會找到答案。 – chr