Android 无法在三星和HTC UI上接收ACTION_NEW_图片';s
我有一个应用程序,它有一个接收动作新图片的广播接收器。除了htc和三星摄像头用户界面的设备外,这款接收器在大多数设备上都能正常工作 这是我的听筒: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
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进行一些检查。