清单:
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AlarmActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<receiver android:name="CallReciver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE">
</action>
</intent-filter>
</receiver>
<receiver android:name=".SmsReceiver">
<intent-filter android:priority="1000">
<action android:name=
"android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<receiver android:name=".OnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service
android:enabled="true"
android:name=".AlarmService">
</service>
</application>
<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.WRITE_SMS">
</uses-permission>
<uses-permission android:name="android.permission.READ_SMS">
</uses-permission>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
接收器:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
public class OnBootReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.d("Test","booot");
Toast.makeText(context, "Test", Toast.LENGTH_LONG).show();
}
}
接收器不起作用。我关闭并打开我的设备,没有任何反应。 SMS和Call Receiver在这个项目中运作良好。 SMS Receiver和CallReceviver - 效果很好。 第一篇文章更新 - 添加完整清单。
答案 0 :(得分:48)
如果你有 HTC devic ,你还需要注册“android.intent.action.QUICKBOOT_POWERON”。所以清单中的条目应该是:
<receiver android:name=".OnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
在我的HTC上,如果我关闭设备并将其打开一段时间,我会收到QUICKBOOT_POWERON而没有BOOT_COMPLETED。
如果我关闭设备并取出电池一段时间 - 我在启动后获得了BOOT_COMPLETED。
答案 1 :(得分:6)
提出许可
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
答案 2 :(得分:3)
另请注意,在Android&gt; = 3.1中,应用程序安装在“已停止”状态,并且在用户“对应用程序执行某项操作”至少一次之前,不会获得启动和关闭事件。见this post on the topic.
答案 3 :(得分:1)
试试这个::
<receiver android:enabled="true" android:exported="true"
android:name=".OnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
干杯... !!!