解决方案 »

  1.   

    先确定有这两个权限:    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
        <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
    再确定BroadcastReceiver有没有注册上。
    android.intent.action.PHONE_STATE不是有序广播,如果上面两条没问题,应该是可以接受到的。
    android.intent.action.NEW_OUTGOING_CALL是有序广播,如果怀疑被其他应用abort了的话,就把你的BroadcastReceiver设置一个比较高的优先级,试试能不能接收到。
      

  2.   

    权限都加了的,我是在AndroidManifest.xml注册的,注册应该没问题,但是还是没有接收到android.intent.action.PHONE_STATE这个广播,优先级的话我有常识过Integer.MAXVALUE,结果还是接收不到
      

  3.   

    优先级只对有序广播有用。
    能收到android.intent.action.NEW_OUTGOING_CALL这个广播吗?
      

  4.   

    两个都收不到,一个广播Broadcas接收两个action的设置应该没问题吧?
      

  5.   

    我是直接在AndroidManifest.xml注册的
    <receiver android:name="com.test.servicedemo.MyReceiver" >
                <intent-filter>
                    <action android:name="android.intent.action.PHONE_STATE" />
                    <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
                </intent-filter>
            </receiver>
    虚拟机测试通过,真机失败
      

  6.   

    你这个应用是不是没有Activity?
    4.0以后对这个情况是有限制的,一个APK中如果没有Activity,只有Receiver或Service,Service或Receiver都是不会启动的,也就收不到广播。
    这种限制是为了防止一些流氓软件在后台乱来。
      

  7.   

    是的,但是我设置Activity的时候也接收不到。
      

  8.   

    是的,但是我设置Activity的时候也接收不到。
    Activity启动以后能收到广播吗?
      

  9.   

    如果Activity从来没启动过,也是收不到广播的。除非是系统应用。
      

  10.   

    你广播不是在Manifest里注册的么
      

  11.   

    你广播不是在Manifest里注册的么我是想在Manifest里面注册。后面发现不行,于是我就两种方式都测试了,都没有效果。
      

  12.   

    你广播不是在Manifest里注册的么我是想在Manifest里面注册。后面发现不行,于是我就两种方式都测试了,都没有效果。
    广播还是放在Manifest里面注册。然后你的应用要有个Activity,开机后你运行一下这个Activity。之后就一直能收到广播了。
      

  13.   

    你广播不是在Manifest里注册的么我是想在Manifest里面注册。后面发现不行,于是我就两种方式都测试了,都没有效果。
    广播还是放在Manifest里面注册。然后你的应用要有个Activity,开机后你运行一下这个Activity。之后就一直能收到广播了。好吧,还是没有效果
      

  14.   

    我试了,是可以的。代码贴给你参考一下。
    广播接收器:
    package com.example.boot;import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;public class BootReceiver extends BroadcastReceiver {    @Override
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals("android.intent.action.PHONE_STATE")){
                Log.e("boot", "boot ------ android.intent.action.PHONE_STATE");
            } else if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")){
                Log.e("boot", "boot ------ android.intent.action.NEW_OUTGOING_CALL");
            }
        }}
    Activity,只要启动一次就好了:package com.example.boot;import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;public class MainActivity extends Activity {    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }}
    Manifest:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.boot"
        android:versionCode="1"
        android:versionName="1.0" >    <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="16" />    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >
        </uses-permission>
        <uses-permission android:name="android.permission.READ_PHONE_STATE" >
        </uses-permission>
        <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" >
        </uses-permission>    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.boot.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>        <receiver android:name="BootReceiver" >
                <intent-filter>
                    <action android:name="android.intent.action.PHONE_STATE" />
                    <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
                </intent-filter>
            </receiver>
        </application></manifest>打印的log:
      

  15.   

    在真机上测试通过的,不需要重启,只要装上以后启动一下Activity就可以了。
      

  16.   

    在真机上测试通过的,不需要重启,只要装上以后启动一下Activity就可以了。好吧  机型问题。  你什么机子测试的?
      

  17.   

    在真机上测试通过的,不需要重启,只要装上以后启动一下Activity就可以了。好吧  机型问题。  你什么机子测试的?
    MTK和全志的都试过
      

  18.   

    在真机上测试通过的,不需要重启,只要装上以后启动一下Activity就可以了。好吧  机型问题。  你什么机子测试的?
    MTK和全志的都试过我的小米   没过