Android拨号器应用程序

我想办法从我的自定义拨号应用程序中replace默认的拨号程序应用程序,但我没有得到如何实现这一点。

这是我想要的

  • 创build一个自定义拨号器用户界面
  • 我的应用程序被称为每当通话button硬件或Android中的一个按下
  • 应用程序也可以从联系人屏幕中调用

我指的是公共静态最后的stringACTION_DIAL 。

  1. 创build一个简单的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); } } 
  2. 给您的应用程序权限在AndroidManifest中调用

     <uses-permission android:name="android.permission.CALL_PHONE" /> 
  3. 在AndroidManifest中设置用于在需要拨号器时向您的手机说出使用您的应用程序的意图

当有人按下通话键时:

  <intent-filter> <action android:name="android.intent.action.CALL_BUTTON" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 

当有人启动一个URI时:

  <intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.DIAL" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tel" /> </intent-filter> 

这对我工作:

  <activity android:name=".activities.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- open activity when establishing a call --> <intent-filter> <action android:name="android.intent.action.CALL_PRIVILEGED" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="tel" /> </intent-filter> </activity> 

ACTION_DIAL意图似乎允许你传递一个号码来呼叫标准的拨号程序,准备好让用户调用它,如果他们愿意这样做,那么不是你所需要的。

你有一个具体的问题,或者你是否在寻找某个人来告诉你如何在按下软件/硬件调用button时实现被调用的应用程序?

看起来像你需要ACTION_CALL_BUTTON – http://developer.android.com/reference/android/content/Intent.html#ACTION_CALL_BUTTON