Android 无法在三星和HTC UI上接收ACTION_NEW_图片';s

Android 无法在三星和HTC UI上接收ACTION_NEW_图片';s,android,broadcastreceiver,action,intentfilter,Android,Broadcastreceiver,Action,Intentfilter,我有一个应用程序,它有一个接收动作新图片的广播接收器。除了htc和三星摄像头用户界面的设备外,这款接收器在大多数设备上都能正常工作 这是我的听筒: BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated met

我有一个应用程序,它有一个接收动作新图片的广播接收器。除了htc和三星摄像头用户界面的设备外,这款接收器在大多数设备上都能正常工作

这是我的听筒:

BroadcastReceiver receiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            // Log.e(TAG, "Intent Received");
            // Toast.makeText(Helper.this, "Intent Received",
            // Toast.LENGTH_SHORT).show();
            if (intent.getAction() == android.hardware.Camera.ACTION_NEW_PICTURE) {
                NameEditor.mediaType = "image";
            } else {
                if (intent.getAction() == android.hardware.Camera.ACTION_NEW_VIDEO) {
                    NameEditor.mediaType = "video";
                }
            }
 NameEditor.pictureUri = intent.getData();
            startActivity(dIntent);
        }
    };

    filter = new IntentFilter(android.hardware.Camera.ACTION_NEW_PICTURE);
    filter.addAction(android.hardware.Camera.ACTION_NEW_VIDEO);
    try {
        filter.addDataType("image/*");
        filter.addDataType("video/*");
    } catch (MalformedMimeTypeException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
    registerReceiver(receiver, filter);

有人能帮我解决这个问题吗?

首先,该广播对于API级别14来说是新的,因此除非相关设备运行Android 4.0,否则该广播是不可能的


其次,恕我直言,不要求摄像头应用程序必须发送该广播,无论该摄像头应用程序是由设备制造商还是第三方提供的。当然,我可以编写一个不会发送广播的摄像头应用程序。因此,我会考虑<代码> ActoNo.NexIsIG/<代码>是你的应用程序应该机会主义地使用的,但不能依赖。

谢谢,但是我该怎么做才能支持旧的设备和其他相机应用程序?@ USS1641724:因为你没有解释你想要完成什么,这是不可能回答的。没有通用的、总是有保证的方法可以让你监视用户对相机的操作。我想在用户拍照后执行一项操作(而不是删除)。@user1641724:你可以尝试在
MediaStore
上使用
ContentObserver
,但是你没有办法把它限制在新的摄像机图像上——任何来源的新图像都会触发你的逻辑。或者,您可以尝试使用外部公共存储目录中的
FileObserver
查看照片(请参阅
Environment
)。但是,照相机应用程序不必将照片存储在那里。你不可能可靠地知道“用户拍照”的时间。哦,好的,我自己知道了,谢谢你的帮助。您只需对返回的uri进行一些检查。