У меня есть приложение, в котором я пытаюсь зарегистрировать BroadcastReceiver
, который прослушивает намерение этого типа: android.intent.action.CAMERA_BUTTON
, но проблема в том, что мой метод onReceive () никогда не вызывается!
Вот как я это сделал:
в onCreate()
Я также пытался зарегистрировать это в onResume()
, но с тем же результатом:
drb=new Adisor();
IntentFilter intent=new IntentFilter("android.intent.action.CAMERA_BUTTON");
registerReceiver(drb,intent);
и мой класс Adisor
:
public class Adisor extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("Bau");
if (intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT) != null) {
// prevent the camera app from opening
abortBroadcast();
System.out.println("HEY");
// mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}
}
}
И у меня есть следующие разрешения в manifest file
:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera" />
Но когда я нажимаю кнопку камеры, в logcat не отображается сообщение! Есть идеи почему?
РЕДАКТИРОВАТЬ: я также попытался зарегистрировать свое намерение в файле манифеста
<activity android:name=".TakePhoto"
>
<receiver android:name="com.Contest.Adisor"
android:enabled="true" android:exported="true">
<intent-filter android:priority="10000">
<action android:name="android.intent.action.CAMERA_BUTTON" />
</intent-filter>
</receiver>
Adisor is an inner class of `TakePhoto`.