0

我想接收打开相机的广播。如果某些条件为真,我想阻止该过程。

我没有收到打开相机的广播。(我可以为拍摄的新照片获得广播,这不是我想要的。)

这是我的清单文件的一部分:

<receiver
            android:name=".HardwareActionListener"
            android:enabled="true"
            android:exported="true" >
            <intent-filter android:priority="1000" >
                <action android:name="android.intent.action.CAMERA_BUTTON" >
                </action>
            </intent-filter>
</receiver>

这是我的文件 HardwareActionListener.java 的一部分

System.out.println("Intent action: " + intent.getAction());

if (intent.getAction().equalsIgnoreCase(
                "android.intent.action.CAMERA_BUTTON")) {
            System.out.println("CAMERA Button broadcast received and aborted");
            if(some_condition_true)
                  abortBroadcast();
        }

我已经在 google 和 stackverflow 上搜索了一整天。我尝试了每一种组合。但是我没有因为打开相机而被广播。

我正在使用三星 Galaxy 选项卡进行测试。哪个没有硬件相机按钮。

这个问题的一个答案说

您不能:意图仅由硬件相机按钮生成,而不是由相机应用程序中的按钮生成。

那么我的清单文件的意图过滤器有什么问题吗?还是由于设备没有硬件相机按钮而导致的问题?

4

1 回答 1

4

我想接收打开相机的广播。

没有这样的广播。

如果某些条件为真,我想阻止该过程。

请使用设备管理 API 来控制对摄像头的访问。

这是我的清单文件的一部分

您正在收听 CAMERA 按钮按下,这可能与相机应用程序有任何关系,也可能没有任何关系,并且并非在所有设备上都存在。

但是我没有因为打开相机而被广播。

那是因为没有这样的广播。

这个问题的一个答案是“你不能:意图仅由硬件相机按钮生成,而不是由相机应用程序中的按钮生成。”

这个答案是正确的。

于 2012-11-19T11:33:45.670 回答