gpt4 book ai didi

android - BroadcastReceiver 的 onReceive() 方法永远不会被调用

转载 作者:行者123 更新时间:2023-11-29 18:17:53 25 4
gpt4 key购买 nike

我有一个应用程序,我正在尝试注册一个 BroadcastReceiver 来监听这种类型的 Intent :android.intent.action.CAMERA_BUTTON 但问题是我的 onReceive() 方法永远不会被调用!

我是这样做的:

onCreate() 中,我也尝试在 onResume() 中注册它,但结果相同:

drb=new Adisor();
IntentFilter intent=new IntentFilter("android.intent.action.CAMERA_BUTTON");
registerReceiver(drb,intent);

和我的类(class)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);
}
}

}

并且我在 list 文件中拥有以下权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera" />

但是当我按下相机按钮时,logcat 中没有显示任何消息!知道为什么吗?

编辑:我也尝试在 list 文件中注册我的 Intent

  <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`.

最佳答案

像这样尝试。

IntentFilter intentFilter =
new IntentFilter(Intent.ACTION_CAMERA_BUTTON);
intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
registerReceiver(drb, intentFilter);

编辑代码。

替换以下代码部分。

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);
}
}

}

有了这个。

private final BroadcastReceiver drb = new 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);
}
}
};

关于android - BroadcastReceiver 的 onReceive() 方法永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7186642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com