【发布时间】:2013-06-02 01:10:45
【问题描述】:
我试图在每次开始通话或每次接听电话时显示一条消息。我制作了一个适用于传入呼叫但不适用于传出呼叫的代码。 我确实阅读了有关此主题的不同帖子。
谁能告诉我为什么下面的代码向我展示了(当然,这段代码并没有完成我之前提到的所有事情):
- 当我接到电话时“外出”
- 当我开始通话时,“INCOMING”然后“OUTGOING”
/* 来自 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的定义是不是颠倒了? -
+1。谢啦。我猜这就是它。要检查它。但我决定注册两个不同的广播接收器。
-
一旦你得到它的工作,包括第二个问题(当你开始通话时祝酒两次),发布更正作为答案并接受它。这样做是完全可以的,所以如果其他人遇到同样的问题,他们就会找到答案。
标签: android