0

我正在尝试启动一个新应用程序,但我需要了解手机状态的变化......由于某种原因(我对此不熟悉)我无法捕捉到变化的广播。那是我的代码:

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

public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Log.d("TAG","yyyyyyyyyyyy");
}
}

这就是我的清单:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <receiver
        android:name=".MyReceiver">
         <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE"/>
        </intent-filter>
    </receiver>
</application>

如您所见...非常简单。但我在 LogCat 上的 onReceive 中看不到日志。有人知道为什么吗?谢谢!

4

2 回答 2

1

由于thisthis,您的 BroadcastReceiver 将不会收到任何内容。解决方案是为您的应用程序设计一个简单的活动,该活动在安装后至少启动一次,然后才开始接收。

于 2012-07-26T17:35:54.013 回答
0

为了注册基于 Manifest 的广播接收器,您需要通过从应用程序抽屉打开它来运行您的应用程序。如果你不这样做,那么接收器将不会被 Android 调用。所以基本上,你至少需要一个可以启动的活动——它不需要做任何事情,只需要至少启动一次。是你做的吗?

在 Android 3.0+ 之后是这样

于 2012-07-26T16:14:18.593 回答