Java 我正试图在我的应用程序上实现摄像头功能,但是;“应用程序不会运行”;

Java 我正试图在我的应用程序上实现摄像头功能,但是;“应用程序不会运行”;,java,android,Java,Android,因此,我有一个功能性应用程序,它有很多页面,这是注册2页面,它应该打开一个标准的android摄像头,然后使用注册java页面底部的代码存储它 这是我的密码: package com.example.mockups; import android.graphics.drawable.Drawable; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import a

因此,我有一个功能性应用程序,它有很多页面,这是注册2页面,它应该打开一个标准的android摄像头,然后使用注册java页面底部的代码存储它

这是我的密码:

    package com.example.mockups;

import android.graphics.drawable.Drawable;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;

import java.io.File;


public class Register2 extends AppCompatActivity {
    Button button;
    ImageView imageView;
    static final int CAM_REQUEST = 1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register2);
        button = (Button) findViewById(R.id.buttonContinue);
        imageView = (ImageView) findViewById(R.id.imageView);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent camera_intent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE);
                File file = getFile();
                camera_intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri. fromFile(file));
                startActivityForResult(camera_intent, CAM_REQUEST);

            }
        });
    }

    private File getFile()
    {
        File folder = new File("sdcard/camera");

        if (!folder.exists())
        {
            folder.mkdir();
        }

        File image_file = new File(folder, "cam_image.jpg");
        return image_file;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        String path = "sdcard/camera/cam_image.jpg";
        imageView.setImageDrawable(Drawable.createFromPath(path));

    }
}
_________________________________

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_register2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.strongholdmockups.Register2">

    <TextView
        android:text="Build Profile"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/buildProTitle"
        android:textAppearance="@style/TextAppearance.AppCompat.Display1"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    <TextView
        android:text="Upload Profile Picture:"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="33dp"
        android:id="@+id/textView46"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1"
        android:layout_below="@+id/buildProTitle"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="36dp"
        android:layout_marginStart="36dp" />

    <Button
        android:text="Upload from Camera Roll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="21dp"
        android:id="@+id/buttonContinue"
        style="@android:style/Widget.Holo.Light.Button"
        android:layout_below="@+id/textView46"
        android:layout_alignRight="@+id/buildProTitle"
        android:layout_alignEnd="@+id/buildProTitle" />

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="350dp"
        android:layout_height="250dp"
        android:layout_above="@+id/continueBtn1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_gravity="center_horizontal" />


    <Button
        android:text="Continue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="23dp"
        android:layout_marginEnd="23dp"
        android:layout_marginBottom="14dp"
        android:id="@+id/continueBtn1"
        style="@style/Widget.AppCompat.Button.Borderless.Colored"
        android:background="@color/cardview_light_background"
        android:textAppearance="@style/TextAppearance.AppCompat.Headline"
        android:layout_alignParentBottom="true"
        android:layout_alignRight="@+id/image_view"
        android:layout_alignEnd="@+id/image_view" />

</RelativeLayout>


__________________

      <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
package com.example.mockups;
导入android.graphics.drawable.drawable;
导入android.provider.MediaStore;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.ImageView;
导入android.content.Intent;
导入android.net.Uri;
导入android.os.Bundle;
导入android.widget.Button;
导入java.io.File;
公共类注册表2扩展了AppCompatActivity{
按钮;
图像视图图像视图;
静态最终int CAM_请求=1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register2);
按钮=(按钮)findViewById(R.id.buttonContinue);
imageView=(imageView)findViewById(R.id.imageView);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向照相机\意向=新意向(MediaStore.ACTION\图像\捕获);
File=getFile();
camera_intent.putExtra(MediaStore.EXTRA_输出,Uri.fromFile(文件));
startActivityForResult(摄像机意图、摄像机请求);
}
});
}
私有文件getFile()
{
文件夹=新文件(“SD卡/摄像头”);
如果(!folder.exists())
{
folder.mkdir();
}
File image_File=新文件(文件夹“cam_image.jpg”);
返回图像文件;
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
String path=“sdcard/camera/cam_image.jpg”;
setImageDrawable(Drawable.createFromPath(path));
}
}
_________________________________
__________________

您必须检查是否为API版本>=23授予了权限。在使用相机/外部存储器之前,在代码中添加类似的内容

if (Build.VERSION.SDK_INT >= 23) {
    if (checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
        Log.v(TAG,"Permission is granted");
        return true;
    } else {
        Log.v(TAG,"Permission is revoked");
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
        return false;
    }
}else { //permission is automatically granted on sdk<23 upon installation
    Log.v(TAG,"Permission is granted");
    return true;
}
if(Build.VERSION.SDK\u INT>=23){
if(checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE)==PackageManager.permission_grated){
Log.v(标记“已授予许可”);
返回true;
}否则{
Log.v(标记“权限被撤销”);
ActivityCompat.requestPermissions(这个新字符串[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);
返回false;
}

}else{//在SDK上自动授予权限。请说明为什么您的应用程序无法运行。您会遇到什么错误?您的日志显示了什么?否,请在要使用相机/外部存储的活动中添加此代码。这需要在启动相机活动之前实现。