簡體   English   中英

OnReceive 呼叫不起作用 Android

[英]OnReceive call not working Android

我有一個 class ,其代碼如下:

public class CallManager extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        tManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        Log.i("onReceive","here");
    }
}

清單上的權限:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />
<uses-permission android:name="android.permission.BOOT_COMPLETED" />

接收者意圖過濾器:

<receiver android:name="com.ram.tapdetector.CallManager">
    <intent-filter> 
        <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter>
 </receiver>

出於某種原因,onReceive function 沒有記錄任何內容?

我怎樣才能解決這個問題? 任何幫助將不勝感激,謝謝。

您必須添加權限

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

代替

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

BOOT_COMPLETED 此處查閱文檔。

據我所見,其他一切都還可以。

ps :如果您想接收來電廣播事件,請使用權限

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

並聲明您的意圖過濾器

<receiver 
  android:name="com.ram.tapdetector.CallManager"
  android:enabled="true">   
    <intent-filter
      android:priority="1000">
        <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>

檢查這個不錯的教程更多。

您的AndroidManifest.xml文件中需要以下內容:

1)在您的元素中:

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

2)在您的元素中(確保對BroadcastReceiver使用完全限定的[或相對]類名):

<receiver android:name="com.example.CallManager">  
    <intent-filter>  
        <action android:name="android.intent.action.BOOT_COMPLETED" />  
    </intent-filter>  
</receiver>

在MyBroadcastReceiver.java中:

`    package com.example;

public class CallManager extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        tManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        Log.i("onReceive","here");
    }
    }`

如果您使用的是HTC mobile,

隨着

`<action android:name="android.intent.action.BOOT_COMPLETED" />  `

也用

`<action android:name="android.intent.action.QUICKBOOT_POWERON" />`

HTC設備似乎沒有趕上BOOT_COMPLETED

您是否嘗試過標志:

android:enabled="true" 
android:exported="true" 

這個問題已經過時了,但無論如何我有一個建議。 小心,你有兩倍的權限:

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

當您嘗試運行應用程序時,這可能會產生一些錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM