0

나는 android.intent.action.NEW_OUTGOING_CALL을 (을) 잡을 인 텐트 필터가있는 Broadcastreceiver가 있습니다.Android 수신기가 NEW_OUTGOING_CALL을 (를) 무시합니다.

많은 튜토리얼을 읽고 NEW_OUTGOING_CALL 인 텐트 처리에 대해 여기에서 대답하지만이 기능을 작동시키지 못했습니다. 내 목표는 내 브로드 캐스트 수신자가받은 android.intent.action.NEW_OUTGOING_CALL 인 텐트를 기록하는 것입니다. 나는이 간단한 일을 할 수 없다. 여기

내 코드입니다 :

Manifest.xml 이것은 브로드 캐스트 리시버 (TestReceiver.java) 코드입니다

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="net.vannus.broadcasttest"> 

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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver android:name=".TestReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 

package net.vannus.broadcasttest; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class TestReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Log.w("###TEST###",intent.getAction()); 
    } 
} 

이 프로젝트는 또한 아니오 빈 MainActivity를 포함 기능. 프로젝트를 실행하면 주 활동이 시작되지만 전화를 걸거나받을 때 로그가 기록되지 않습니다. 에뮬레이터 (Android 7) 및 Motorola G4 전화 (Android 6.0)에서 코드를 테스트했지만 logcat에 아무 것도 기록되지 않았습니다. Android Studio 2.3을 사용하고 있습니다.

내가 뭘 잘못하고 있니?

감사합니다> 응용 프로그램을 선택 응용 프로그램을 설정 - 전화 권한을 부여하기 위해 이동 전화

Vannus

답변

1

이 솔루션은 매우 간단합니다 .... 18 : 단서가 로그 캣을 검색 할 때 I이 오류

03-05 20 발견했다 57.090 1547년부터 1775년까지/system_process의 W를/BroadcastQueue : 허가 거부 : 텐트 수용 {작용 = android.intent.action.NEW_OUTGOING_CALL FLG = net.vannus.broadcasttest에 0x10000010 (엑스트라가 있음)}/.TestReceiver에는 android.permission.PROCESS_OUTGOING_CALLS이 필요합니다. 전송 인 android (uid 1000) 때문입니다.