2017-06-29 13 views
1

私はBroadcastReceiverを作成してCALLアクションを検出しました。android - BroadcastReceiverでCALLインテントを受信できません

android.intent.action.CALLアクティビティで宣言されたときに、インテントが受信されます。

<activity 
    android:name="com.xxx.yyy.CallCatcherActivity" 
    android:launchMode="singleTop" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar" 
    android:screenOrientation="landscape"> 

    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <action android:name="android.intent.action.CALL" /> 
     <action android:name="android.intent.action.CALL_BUTTON" /> 
     <action android:name="android.intent.action.CALL_PRIVILEGED" /> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
     <action android:name="android.intent.action.DIAL" /> 

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

しかし、それはBroadcastReceiverまたはサービス上では動作しません。

のAndroidManifest.xml

<receiver android:name="PhoneCallListener"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <action android:name="android.intent.action.CALL" /> 
     <action android:name="android.intent.action.CALL_BUTTON" /> 
     <action android:name="android.intent.action.CALL_PRIVILEGED" /> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
     <action android:name="android.intent.action.DIAL" /> 

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

PhoneCallListener.java

public class PhoneCallListener extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d("-", intent.getAction() + " received"); 

     try { 
      if (intent.getAction().equals("android.intent.action.CALL")) { 
       Log.d("-", "+ CALL action received!!"); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+1

ください、あなたのアプリケーションのアクセス許可を記載してください – eduyayo

答えて

1

アクションCALLとアクションDIALはActivityを開始するために使用され、これらのアクションは、放送Intent秒で使用されていません。 ActivityServiceおよびBroadcastReceiverの開始に使用される別のIntentがあり、それらはお互いに関係ありません。

Intent.ACTION_NEW_OUTGOING_CALLをキャッチし、どのように通話状態の変化を検出するPhoneStateListenerを使用する方法の詳細についてはHow do you receive outgoing call in broadcastreceiverを参照してください。

また、着信および発信コールの検出に関するチュートリアルについては、https://www.codeproject.com/Articles/548416/Detecting-incoming-and-outgoing-phone-calls-on-Andを参照してください。

関連する問題