广播接收器从犯规开始服务 [英] BroadcastReceiver doesnt start from service
本文介绍了广播接收器从犯规开始服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要开始从服务一个BroadcastReceiver,它不工作,我也跟着一些教程,一切似乎是正确的,但它不是。
下面是我的code:
公共类ServiceNotif延伸服务{
smsReceiver接收机;
私有静态最后的IntentFilter的IntentFilter =
新的IntentFilter(android.provider.Telephony.SMS_RECEIVED); @覆盖
公共无效的onCreate(){
// TODO自动生成方法存根
super.onCreate();
Log.w(在服务质量上intrat,);
Toast.makeText(getBaseContext(),
在服务质量上intrat
Toast.LENGTH_SHORT).show();
在functia ASTA // DACA primesc联合国mesaj本身内部
接收器=新smsReceiver();
registerReceiver(接收器,IntentFilter的);
} @覆盖
公共无效的onDestroy(){
// TODO自动生成方法存根
super.onDestroy();
unregisterReceiver(接收机);
} @覆盖
公众的IBinder onBind(意向意图){
返回mBinder;
} //这是从客户端接收的交互的对象。看到
// RemoteService一个更完整的例子。
私人最终的IBinder mBinder =新LocalBinder(); / **
*为类客户端访问。因为我们总是知道这个服务
*在同一进程中作为它的客户运行时,我们并不需要处理
* IPC。
* /
公共类LocalBinder扩展粘结剂{
ServiceNotif的getService(){
返回ServiceNotif.this;
}
}
@覆盖
公众诠释onStartCommand(意向意图,诠释标志诠释startId){
Log.i(本地服务,收到起始ID+ startId +:+意向);
//我们希望该服务继续运行,直到它被明确
//停止,因此返回粘。
返回START_STICKY;
} }
为什么没有当我得到一个消息时,接收者被触发?
编辑:
我在我的日志还可以得到这样的:
8月12日至9日:16:05.708:W / GAV3(1183):螺纹[GAThread,5,主]:服务不可用(code = 1),将重试。
8月12日至9日:16:05.718:I / GAV3(1183):螺纹[GAThread,5,主]:未找到活动的数据。
8月12日至9日:16:10.779:W / GAV3(1183):螺纹[服务重新连接,5,主]:服务不可用(code = 1),使用本地存储。
解决方案
为什么没有当我得到一个消息时,接收者被触发?
块引用>由于你没有初始化
接收
。登记前初始化它的onCreate()
。@覆盖
公共无效的onCreate(){
super.onCreate();
Log.w(在服务质量上intrat,);
Toast.makeText(getBaseContext(),
在服务质量上intrat
Toast.LENGTH_SHORT).show();
在functia ASTA // DACA primesc联合国mesaj本身内部
接收器=新的广播接收器(); //初始化接收器
registerReceiver(接收器,IntentFilter的);
}编辑:
请确保您有正确的许可,在你的清单。
<清单
...
<使用许可权的android:NAME =android.permission.RECEIVE_SMS/>
...
< /清单>I need to start a broadcastreceiver from a service and it's not working, i followed some tutorials and everything seems to be right but its not.
Here is my code:
public class ServiceNotif extends Service{ smsReceiver receiver; private static final IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); Log.w("A intrat in service"," "); Toast.makeText(getBaseContext(), "A intrat in service", Toast.LENGTH_SHORT).show(); //daca primesc un mesaj se intra in functia asta receiver = new smsReceiver(); registerReceiver(receiver, intentFilter); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); unregisterReceiver(receiver); } @Override public IBinder onBind(Intent intent) { return mBinder; } // This is the object that receives interactions from clients. See // RemoteService for a more complete example. private final IBinder mBinder = new LocalBinder(); /** * Class for clients to access. Because we know this service always * runs in the same process as its clients, we don't need to deal with * IPC. */ public class LocalBinder extends Binder { ServiceNotif getService() { return ServiceNotif.this; } } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i("LocalService", "Received start id " + startId + ": " + intent); // We want this service to continue running until it is explicitly // stopped, so return sticky. return START_STICKY; } }
Why isn't the receiver get triggered when i get a message?
EDIT: I also get this in my log:
12-09 08:16:05.708: W/GAV3(1183): Thread[GAThread,5,main]: Service unavailable (code=1), will retry. 12-09 08:16:05.718: I/GAV3(1183): Thread[GAThread,5,main]: No campaign data found. 12-09 08:16:10.779: W/GAV3(1183): Thread[Service Reconnect,5,main]: Service unavailable (code=1), using local store.
解决方案Why isn't the receiver get triggered when i get a message?
Because you didn't initialized the
Receiver
. Init it inonCreate()
before registration.@Override public void onCreate() { super.onCreate(); Log.w("A intrat in service"," "); Toast.makeText(getBaseContext(), "A intrat in service", Toast.LENGTH_SHORT).show(); //daca primesc un mesaj se intra in functia asta receiver = new BroadcastReceiver(); // init the Receiver registerReceiver(receiver, intentFilter); }
Edit:
Be sure you have the right permission in your manifest.
<manifest ... <uses-permission android:name="android.permission.RECEIVE_SMS" /> ... </manifest>
这篇关于广播接收器从犯规开始服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文