NEW_OUTGOING_CALL не вызывается на Samsung Galaxy S - PullRequest
5 голосов
/ 14 июля 2011

Попытка перехватить исходящие вызовы и найти решение, хорошо работающее на

  • Nexus 1 стоковый Android 2.2
  • HTC desire 2.2
  • Moto Defy 2.1

Но не на Samsung Galaxy S под управлением 2.1 кто-нибудь видел это?

 <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" /> 

Обновление: также добавлен PROCESS_OUTGOING_CALLS.

Приемник:

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());
    }
}

Ответы [ 4 ]

5 голосов
/ 15 июля 2011

Вам необходимо добавить разрешение пользователя:

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

См. эту запись в блоге в качестве примера того, как установить и использовать NEW_OUTGOING_CALL.

Также см. это сообщение в блоге о том, как установить android:priority в.

5 голосов
/ 15 июля 2011

Попробуйте привести манифест в порядок, предложенный Google Dev: Manifest.xml

Как это:

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

Возможно, проблема в том, как некоторые устройства анализируют Манифест и могут неправильно регистрировать получателя.

РЕДАКТИРОВАТЬ: На ADT 16 Lint скажет вам, что ваши разрешения находятся не в том месте, поэтому я предполагаю, что это должно быть больше проблемы, чем считалось ранее

Приветствия

0 голосов
/ 10 мая 2014

Я создал слушателя трансляции программно.Работает нормально.Для справки.

IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.NEW_OUTGOING_CALL");

receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.d(TAG, "onReceive, Action:" +intent.getAction());
    }
};
registerReceiver(receiver, filter);
0 голосов
/ 14 июля 2011

Вы пытались увеличить android:priority?Скажем, до 10000.

Я перехватывал входящие SMS ', и увеличение атрибута android:priority помогло

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...