Я отправляю намерение от «активности» к получателю в «услуге» (и передаю данные). Мой код имеет активность и обслуживание (у которого есть приемник). Приемник объявлен следующийAndroid: отсутствует информация о «дополнительных» в намерении
<receiver android:name="xxx"
android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<!-- protected intents meant for os and not for us <action android:name="android.intent.action.ACTION_NEW_OUTGOING_CALL" android:priority="0" /> -->
</intent-filter>
</receiver>
активности определяются следующим образом
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Я рассмотрел Use an intent to send data to my activity
Намерения Я вызов является намерением вызова и передачи номера вызова назначения, со следующим код
Log.e(TAG,"Calling "+number);
Intent callIntent = new Intent(Intent.ACTION_CALL); //ACTION_NEW_OUTGOING_CALL is deprecated in API 21, hence ACTION_CALL
callIntent.putExtra("PHONE_NUMBER",number);
number = "tel:"+number;
callIntent.setData(Uri.parse(number));
startActivity(callIntent);
Выше код успешно делает телефонный звонок из моего приложения. У меня также есть приемник для перехвата вызовов, и приемник перехватывает вышеуказанный вызов просто отлично. Однако в приемнике отсутствуют «дополнительные функции» вышеуказанного намерения; Я всегда получаю «PHONE_NUMBER» в нуле в следующем коде
@Override
public void onReceive(Context context, Intent intent) {
//blah blah..
savedNumber = intent.getExtras().getString("PHONE_NUMBER");
if(savedNumber == null)
savedNumber = intent.getStringExtra("PHONE_NUMBER");
Log.e(TAG, " savedNumber = "+savedNumber);
}
Что моя ошибка, и почему это я получаю намерение в приемнике, но «Extras» отсутствует (как вы, возможно, заметили, я попытался чтобы получить его в обоих направлениях от намерения)
NEW_OUTGOING_CALL - это защищенная цель. Следовательно, я не использую NEW_OUTGOING_CALL, как вы можете видеть в моем фрагменте xml – mobileDev
О, извините за ошибку, ACTION_CALL также является защищенным действием :) Это позволяет вам называть телефонный номер напрямую, без взаимодействия с пользователем. Это риск для безопасности, поэтому он «защищен» разрешением. Вы также заметите, что Manifest.permission не определяет это разрешение публично: это намеренно внутри системы. – alway5dotcom