2013-09-03 32 views
8

Tôi muốn khởi chạy camera mặc định, nhưng muốn nó hoạt động như được khởi động từ trình khởi chạy (tức là ảnh kết quả sẽ được ứng dụng máy ảnh lưu vào bộ sưu tập của người dùng, thay vì được trả lại ứng dụng của tôi). Nếu tôi sử dụng Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);, ứng dụng máy ảnh sử dụng "OK? Thử lại?" - Giao diện người dùng và không lưu ảnh. Tôi không muốn sử dụng ý định "trực tiếp" com.android.camera, bởi vì rất nhiều thiết bị sử dụng các ứng dụng máy ảnh tùy chỉnh. Tôi đã thấy rằng ứng dụng kho gallery3d sử dụng bí danh triển khai com.android.camera/.Camera, nhưng tôi không chắc chắn rằng mọi ứng dụng máy ảnh nhà sản xuất được tải sẵn đều thực hiện điều này.Khởi chạy ứng dụng máy ảnh mặc định (không quay trở lại)

Trả lời

10

bây giờ tôi đã thực hiện nó như thế này:

 Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     try { 
      PackageManager pm = mContext.getPackageManager(); 

      final ResolveInfo mInfo = pm.resolveActivity(i, 0); 

      Intent intent = new Intent(); 
      intent.setComponent(new ComponentName(mInfo.activityInfo.packageName, mInfo.activityInfo.name)); 
      intent.setAction(Intent.ACTION_MAIN); 
      intent.addCategory(Intent.CATEGORY_LAUNCHER); 

      startActivity(intent); 
     } catch (Exception e){ Log.i(TAG, "Unable to launch camera: " + e); } 
+2

Lưu ý, bạn có thể trao đổi trên 'Intent.ACTION_MAIN' và thay thế các hành động với ' MediaStore.ACTION_IMAGE_CAPTURE' để ứng dụng bắt đầu ở chế độ chụp ảnh hoặc 'MediaStore.ACTION_VIDEO_CAPTURE' để ứng dụng bắt đầu ở chế độ quay video. – pents90

+1

nếu bạn đang làm điều này từ một dịch vụ nền, bạn sẽ cần thêm intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); –

+1

Câu trả lời này không hoạt động! Nó mở Danh bạ, Youtube và các ứng dụng không có liên quan khác. – NecipAllef

5

Mã này sẽ làm các trick:

Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); 
context.startActivity(intent); 
+0

Mục đích này dường như vượt trội so với MediaStore.ACTION_IMAGE_CAPTURE, vì trước đó sẽ mở một số ứng dụng máy ảnh nhất định ở chế độ độc quyền cho Ảnh, không cho phép người dùng chuyển sang video. MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA dường như không bị giới hạn như nhau. –