Java 用android打电话

Java 用android打电话,java,android,Java,Android,我想知道如何在不使用意图的情况下在android中拨打电话 我知道这可以通过意图来完成,但我搜索了一遍,没有关于这个主题的内容 假设我想为android编写一个新的拨号程序。我该怎么做 提前感谢您打电话, private void performDial(String numberString) { if (!numberString.equals("")) { Uri number = Uri.parse("tel:" + numberString); Intent dial =

我想知道如何在不使用意图的情况下在android中拨打电话

我知道这可以通过意图来完成,但我搜索了一遍,没有关于这个主题的内容

假设我想为android编写一个新的拨号程序。我该怎么做


提前感谢您打电话,

private void performDial(String numberString) {
if (!numberString.equals("")) {
   Uri number = Uri.parse("tel:" + numberString);
   Intent dial = new Intent(Intent.ACTION_CALL, number);
   startActivity(dial);
}
}

将此权限添加到清单中。

<uses-permission android:name="android.permission.CALL_PHONE" />
 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<action android:name="android.intent.action.PHONE_STATE" /
将这些添加到清单中

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

 <receiver android:name=.OutgoingCallReceiver" >
  <intent-filter>
  <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
 </intent-filter>
注意: 上面的示例生成了一个具有黑色背景布局的视图,其尺寸如上所示。 您有权在此视图中添加任何布局。 例如,要在视图中包含布局,可以修改上述代码以包含以下代码

 ly1 = new LinearLayout(getApplicationContext());
    ly1.setOrientation(LinearLayout.HORIZONTAL);


    View hiddenInfo = getLayoutInflater().inflate(R.layout.layout1, ly1, false);
    ly1.addView(hiddenInfo);

    wm.addView(ly1, params1);
在清单中,您需要包括以下权限。

<uses-permission android:name="android.permission.CALL_PHONE" />
 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<action android:name="android.intent.action.PHONE_STATE" /

我不确定您的自定义GUI是否总是位于默认GUI之上,因为系统广播接收器和接收器都试图在屏幕顶部显示其GUI。我们不确定先调用哪一个,但要使GUI位于屏幕顶部,一项棘手的工作是在手机铃声响起1-2秒后调用您的活动。为此,我使用了处理程序

来拨打电话,

private void performDial(String numberString) {
if (!numberString.equals("")) {
   Uri number = Uri.parse("tel:" + numberString);
   Intent dial = new Intent(Intent.ACTION_CALL, number);
   startActivity(dial);
}
}

将此权限添加到清单中。

<uses-permission android:name="android.permission.CALL_PHONE" />
 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<action android:name="android.intent.action.PHONE_STATE" /
将这些添加到清单中

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

 <receiver android:name=.OutgoingCallReceiver" >
  <intent-filter>
  <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
 </intent-filter>
注意: 上面的示例生成了一个具有黑色背景布局的视图,其尺寸如上所示。 您有权在此视图中添加任何布局。 例如,要在视图中包含布局,可以修改上述代码以包含以下代码

 ly1 = new LinearLayout(getApplicationContext());
    ly1.setOrientation(LinearLayout.HORIZONTAL);


    View hiddenInfo = getLayoutInflater().inflate(R.layout.layout1, ly1, false);
    ly1.addView(hiddenInfo);

    wm.addView(ly1, params1);
在清单中,您需要包括以下权限。

<uses-permission android:name="android.permission.CALL_PHONE" />
 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<action android:name="android.intent.action.PHONE_STATE" /

我不确定您的自定义GUI是否总是位于默认GUI之上,因为系统广播接收器和接收器都试图在屏幕顶部显示其GUI。我们不确定先调用哪一个,但要使GUI位于屏幕顶部,一项棘手的工作是在手机铃声响起1-2秒后调用您的活动。为此,我使用了处理程序

来拨打电话,

private void performDial(String numberString) {
if (!numberString.equals("")) {
   Uri number = Uri.parse("tel:" + numberString);
   Intent dial = new Intent(Intent.ACTION_CALL, number);
   startActivity(dial);
}
}

将此权限添加到清单中。

<uses-permission android:name="android.permission.CALL_PHONE" />
 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<action android:name="android.intent.action.PHONE_STATE" /
将这些添加到清单中

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

 <receiver android:name=.OutgoingCallReceiver" >
  <intent-filter>
  <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
 </intent-filter>
注意: 上面的示例生成了一个具有黑色背景布局的视图,其尺寸如上所示。 您有权在此视图中添加任何布局。 例如,要在视图中包含布局,可以修改上述代码以包含以下代码

 ly1 = new LinearLayout(getApplicationContext());
    ly1.setOrientation(LinearLayout.HORIZONTAL);


    View hiddenInfo = getLayoutInflater().inflate(R.layout.layout1, ly1, false);
    ly1.addView(hiddenInfo);

    wm.addView(ly1, params1);
在清单中,您需要包括以下权限。

<uses-permission android:name="android.permission.CALL_PHONE" />
 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<action android:name="android.intent.action.PHONE_STATE" /

我不确定您的自定义GUI是否总是位于默认GUI之上,因为系统广播接收器和接收器都试图在屏幕顶部显示其GUI。我们不确定先调用哪一个,但要使GUI位于屏幕顶部,一项棘手的工作是在手机铃声响起1-2秒后调用您的活动。为此,我使用了处理程序

来拨打电话,

private void performDial(String numberString) {
if (!numberString.equals("")) {
   Uri number = Uri.parse("tel:" + numberString);
   Intent dial = new Intent(Intent.ACTION_CALL, number);
   startActivity(dial);
}
}

将此权限添加到清单中。

<uses-permission android:name="android.permission.CALL_PHONE" />
 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<action android:name="android.intent.action.PHONE_STATE" /
将这些添加到清单中

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

 <receiver android:name=.OutgoingCallReceiver" >
  <intent-filter>
  <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
 </intent-filter>
注意: 上面的示例生成了一个具有黑色背景布局的视图,其尺寸如上所示。 您有权在此视图中添加任何布局。 例如,要在视图中包含布局,可以修改上述代码以包含以下代码

 ly1 = new LinearLayout(getApplicationContext());
    ly1.setOrientation(LinearLayout.HORIZONTAL);


    View hiddenInfo = getLayoutInflater().inflate(R.layout.layout1, ly1, false);
    ly1.addView(hiddenInfo);

    wm.addView(ly1, params1);
在清单中,您需要包括以下权限。

<uses-permission android:name="android.permission.CALL_PHONE" />
 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<action android:name="android.intent.action.PHONE_STATE" /

我不确定您的自定义GUI是否总是位于默认GUI之上,因为系统广播接收器和接收器都试图在屏幕顶部显示其GUI。我们不确定是哪一个先被调用,但要使您的GUI显示在屏幕上方,一个棘手的工作是当手机铃声响起时,在1-2秒后呼叫您的活动。为此,我使用了处理程序

不确定您是否可以,SMS和拨号程序之间的区别是,SMS可以通过fire and forget来完成,拨号必须是表示在完成之前一直运行的内容

通过这种方式,通过使用intent,您可以启动tactivityforresult以获取结果,而不是在等待方法返回时获取ANR

因此,您需要使用号码作为URI进行intent intent.ACTION\调用,然后启动活动。 您需要


参见示例

不确定是否可以,SMS和拨号器之间的区别在于,SMS可以通过fire and forget来完成,拨号必须是表示在完成之前一直运行的内容

通过这种方式,通过使用intent,您可以启动tactivityforresult以获取结果,而不是在等待方法返回时获取ANR

因此,您需要使用号码作为URI进行intent intent.ACTION\调用,然后启动活动。 您需要


参见示例

不确定是否可以,SMS和拨号器之间的区别在于,SMS可以通过fire and forget来完成,拨号必须是表示在完成之前一直运行的内容

通过这种方式,通过使用intent,您可以启动tactivityforresult以获取结果,而不是在等待方法返回时获取ANR

因此,您需要使用号码作为URI进行intent intent.ACTION\调用,然后启动活动。 您需要


参见示例

不确定是否可以,SMS和拨号器之间的区别在于,SMS可以通过fire and forget来完成,拨号必须是表示在完成之前一直运行的内容

这样,通过使用intent,您可以启动TACTIVITYFRESULT以获得结果,而不是在等待结果时获得ANR