简体   繁体   中英

Send a mobile number from default android dialer to my application

I have a application for calling an API for phone call, When a user dials a number from default dialer of android phone, the number should be copied into the second app(free call twilio),shown in picture.

在此处输入图片说明

Here is what I tried, but no luck.

<activity
android:name=".MainActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.CALL_BUTTON" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.CALL_PRIVILEGED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
</intent-filter>
</activity>

Can anyone help please? :-)

please use below code

Register a BroadcastReceiver like this in Manifest file:

    <!-- DIAL Receiver -->
    <receiver
        android:exported="true"
        android:name="receivers.DialBroadcastReceiver" >
        <intent-filter >
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        </intent-filter>
    </receiver>

You need Permission for NEW_OUTGOING_CALL :

<!-- OUTGOING CALL PERMISSION-->
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

public class DialBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    Log.v("DileBroadCastReceiver","In onReceive()");

    if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
         String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

         Log.v("DialBroadcast Receiver","Number is: "+number);

    }

  }
}

I think you forgot to add intent-filter in your mainActivty like below

       <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>

also add your existing intent-filter as well. Gud luck

It can be possible after searching a lot in google. Finally I got an answer I am sharing it for others.

It can be possible by adding following intent filter in manifest file.

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

create a broadcast reciever with android.intent.action.NEW_OUTGOING_CALL and then call dialledNumber=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

This will give you outgoing number

try this.it might help

Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
context.startActivity(callIntent);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM