2016-12-03 85 views
0

嗨在为Android构建一个简单的应用程序使用android工作室,使用我的设备相机捕获图像并将其存储到画廊,但我得到这个错误:。Android Studio相机使用活动没有找到

FATAL EXCEPTION: main 
                       Process: com.industry.onelove.camerause, PID: 7897 
                       android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.media.action..IMAGE_CAPTION (has extras) } 
                        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1809) 
                        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1523) 
                        at android.app.Activity.startActivityForResult(Activity.java:4224) 
                        at android.app.Activity.startActivityForResult(Activity.java:4183) 
                        at com.industry.onelove.camerause.HomeActivity.takePhoto(HomeActivity.java:74) 
                        at com.industry.onelove.camerause.HomeActivity.access$000(HomeActivity.java:22) 
                        at com.industry.onelove.camerause.HomeActivity$1.onClick(HomeActivity.java:42) 
                        at android.view.View.performClick(View.java:5610) 
                        at android.view.View$PerformClick.run(View.java:22260) 
                        at android.os.Handler.handleCallback(Handler.java:751) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:154) 
                        at android.app.ActivityThread.main(ActivityThread.java:6077) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

我的代码是:

public class HomeActivity extends Activity { 

    private Button button; 
    private static String logtag = "CameraAp"; 
    private static int Take_pic = 1 ; 
    private Uri imageUri; 

    //ONCREATE 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 

     button =(Button) findViewById(R.id.button); 
     button.setOnClickListener(cameraListener); 
    } 
    //BUTTONS LISTENER 
    private View.OnClickListener cameraListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      takePhoto(v); 
     } 
    }; 

    String mCurrentPhotoPath; 

    private File createImageFile() throws IOException {//CREATE FILEPATH WITH DATEFORMAT USE (FROM ANDROID API) 
     // Create an image file name 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     String imageFileName = "JPEG_" + timeStamp + "_"; 
     File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
     File image = File.createTempFile(
       imageFileName, 
       ".jpg", 
       storageDir 
     ); 

     // Save a file: path for use with ACTION_VIEW intents 
     mCurrentPhotoPath = image.getAbsolutePath(); 
     return image; 
    } 

    private void takePhoto(View v){ 
     Intent intent = new Intent("android.media.action..IMAGE_CAPTION"); 
     try { 
      createImageFile(); 
     }catch(IOException io){ 
      Log.e(logtag, io.toString()); 
     } 
     File photo = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),mCurrentPhotoPath); 
     imageUri = Uri.fromFile(photo); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT , imageUri); 
     startActivityForResult(intent , Take_pic); 
    } 

    @Override 
    protected void onActivityResult(int requestCode , int resultCode , Intent intent) 
    { 
     super.onActivityResult(requestCode , resultCode, intent); 
     if(resultCode == Activity.RESULT_OK){ 
      Uri selectedImage = imageUri; 
      getContentResolver().notifyChange(selectedImage,null); 

      ImageView imageView = (ImageView) findViewById(R.id.image_view); 
      ContentResolver cr = getContentResolver(); 
      Bitmap bitmap; 
      try{ 
       bitmap = MediaStore.Images.Media.getBitmap(cr , selectedImage);//CREATE THE BITMAP 
       imageView.setImageBitmap(bitmap);//GIVE IMAGE TO IMAGEVIEW AND SHOW TO USER 
       MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, mCurrentPhotoPath , "auga me mpeikon");//SAVE IMAGE TO GALERY 
      }catch(Exception exp){ 
       Log.e(logtag, exp.toString()); 
      } 
      Toast.makeText(HomeActivity.this , selectedImage.toString(),Toast.LENGTH_LONG).show(); 

     } 
    } 


    //IN ORDER TO SAVE THE IMAGE WE CAN ALSO USE THE API READY FUCTION WHICH SAVES THE FILE TO THE DIRECTORY THROUGH OUR STRING CURRENTPATH 
    private void galleryAddPic() { 
     Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
     File f = new File(mCurrentPhotoPath); 
     Uri contentUri = Uri.fromFile(f); 
     mediaScanIntent.setData(contentUri); 
     this.sendBroadcast(mediaScanIntent); 
    } 
} 

我已经导入到我的清单还:

<uses-permission android:name="android.permission.CAMERA" /> 
      <uses-feature android:name="android.hardware.camera2" /> 
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

有谁知道为什么吗?

回答

2
Intent intent = new Intent("android.media.action..IMAGE_CAPTION"); 

这不是有效的Intent操作。或者,至少,您的设备上没有支持它的应用程序。

也许你的意思是:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
+0

是你写没注意到......但仍然有此错误: –

+0

如果此错误改变的意图后,发生这意味着设备没有camera.or首先检查设备是否有摄像头。 –

相关问题