每次开始呼叫或每次收到呼叫时,我都会尝试显示一条消息。我做了一个代码,对来电有效,但对呼出不起作用。我确实读过关于这个主题的不同帖子。
有人能告诉我为什么下面这段代码显示给我看(当然这段代码不能完成我前面提到的所有事情):
--当我接到电话时“呼出”
-当我开始呼叫时,先是“来电”,然后是“去电”
/来自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" />
4条答案
按热度按时间deikduxw1#
这是我用来对传入和传出电话呼叫做出React的类。它的设置使您只需派生和覆盖您所关心的内容。它还会告诉您呼叫是开始、结束还是未被接听:
ippsafx72#
这是我的最新消息。
事实上,我尝试了两种方法(一个BR和两个BR),都很好用,这要归功于你的回答。此时此刻,一切都不是完美的。我正在努力。我将向您展示如何使用一个BR(因为它是我问题的目标)。
lb3vh1jj3#
j8yoct9x4#
别忘了做一个许可..