Android - OnReceive () yayın alıcısından gönderilecek bağlamı alma


85

Temel olarak bir niyet oluşturmak ve bunu BroadcastReceiver'ımın onReceive () hizmetinden bir hizmete aktarmak istiyorum.

Şimdiye kadar her zaman View.getContext () kullandım, ama burada sıkıştım. Kullanabilmek için bağlamı tam olarak nasıl elde edebilirim public Intent (Context packageContext, Class<?> cls)?

Yanıtlar:


304
public abstract void onReceive(Context context, Intent intent)

onReceivesize bağlamı verir. Daha fazla İstediğiniz ne?


9
Cidden, bunu görene kadar görmedim.
Blasanka

2

Peki, yukarıda bahsedilen cevabın hiçbir faydası yoktur. OnReceive'da olduğunuz sürece bağlamı kullanabilirsiniz. onReceive'den kod döndüğünde, bağlam artık mevcut değildir.

Dolayısıyla, problem ifadeniz, hizmeti bu bağlamı kullanarak amaç oluştururken başlatmak ve ardından bu bağlam nesnesiyle startService'i çağırmak istediğinizi söylüyor. Bu yapılamaz.

Bunu BroadcastReceiver bağlamında neler yapılabileceğini ve yapılamayacağını okuyun.

http://developer.android.com/reference/android/content/BroadcastReceiver.html


söylediğin doğru değil. BroadcastReceivers'dan bir hizmet başlatabilirsiniz, ancak bunlara bağlanamazsınız.
Bardya Momeni

0

Yayın Alıcısında

onReceive(Context context, Intent intent)

yöntem bağlam sağlar

yani

aktivite kullanmaya başlamak için

context.startActivity(intent);

ve hizmet kullanımını başlatmak için

context.startService(intent);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.