我正在尝试在用户使用标准的Android拨号程序拨打电话时显示消息。
我的活动
中有以下代码 public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTestButtonListener();
Log.i(LOG_TAG, "Activity started...");
}
private void setTestButtonListener()
{
Button testButton = (Button)this.findViewById(R.id.testButton);
testButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Log.i(LOG_TAG, "Clicked on test...");
Toast.makeText(getApplicationContext(), (CharSequence)"You clicked on the test button" ,Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+150));
MainActivity.this.sendOrderedBroadcast(intent, null);
MainActivity.this.startActivity(intent);
Log.i(LOG_TAG, "intent broadcasted... I think... ");
}
});
}
然后在BroadcastReceiver(以及从中派生的类)中:
public class OnMakingCallReceiver extends BroadcastReceiver
{
private static final String LOG_TAG = OnMakingCallReceiver.class.getSimpleName() + "_LOG";
@Override
public void onReceive(Context context,Intent intent)
{
Log.i(LOG_TAG, " got here!");
}
}
然后在AndroidManifest.xml中
<uses-permission android:name="android.permission.CALL_PHONE" />
<receiver android:name=".OnMakingCallReceiver" android:priority="999">
<intent-filter>
<action android:name="android.intent.action.CALL"/>
</intent-filter>
</receiver>
我点击测试按钮,我看到了这个输出。
点击测试...... 意图广播......我想......
这就是全部。我希望看到“到这里来!”。
为什么我不这样做?
答案 0 :(得分:0)
您是否在AndroidManifest.xml中定义了接收器?
此外,当您单击直接转到拨号器的内容时,会发送ACTION_CALL_BUTTON。你确定你是这样做的。
答案 1 :(得分:0)
我在AndroidManifest.xml中使用它,它可以工作。我认为关键是intent-filter中的意图NEW_OUTGOING_CALL。
<receiver android:name=".OnMakingCallReceiver" android:exported="true" android:enabled="true">
<intent-filter android:priority="999">
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<action android:name="android.intent.action.ACTION_CALL" />
</intent-filter>
</receiver>
可能会删除ACTION_CALL。此外,可能还需要将其添加到清单中:
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />