Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NEW_OUTGOING_CALL not being called on Samsung Galaxy S

Trying to intercept outgoing calls, and have a solution working well on

  • nexus 1 stock android 2.2
  • HTC desire 2.2
  • Moto defy 2.1

But not on the Samsung Galaxy S running 2.1, anyone seen this?

 <receiver  android:name="com.mypackge.OutGoingCallDetection" 
    android:exported="true"> 
 <intent-filter>   
  <action
    android:name="android.intent.action.NEW_OUTGOING_CALL"
    android:priority="0" /> 
</intent-filter> 
</receiver>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 

Update: the PROCESS_OUTGOING_CALLS is also added.

The receiver:

public class OutGoingCallDetection extends BroadcastReceiver {

    private static final String TAG = "OutGoingCallDetection";


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

        String action = intent.getAction();
        Log.d(TAG, "onReceive, Action:" +intent.getAction());
    }
}
like image 997
scottyab Avatar asked Jul 14 '11 16:07

scottyab


2 Answers

Try putting the manifest in order as suggested by Google Dev: Manifest.xml

Like this:

<uses-permission />
...
<receiver>
    <intent-filter> . . . </intent-filter>
    <meta-data />
</receiver>

There may be an issue in how some devices parse the Manifest and may not register the receiver correctly.

EDIT: As of ADT 16 Lint will tell you that your permissions are in the wrong place, so I'm assuming this must be more of an issue then previously thought

Cheers

like image 125
Chris.Jenkins Avatar answered Nov 08 '22 14:11

Chris.Jenkins


You need to add the user permission:

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

See this blog post as an example of how to setup and use the NEW_OUTGOING_CALL.

Also see this blog post as to what to set your android:priority to.

like image 42
Shane Powell Avatar answered Nov 08 '22 16:11

Shane Powell