Java Android 4.4.2完全运行我的应用程序,但其他版本不运行

Java Android 4.4.2完全运行我的应用程序,但其他版本不运行,java,android,android-studio,Java,Android,Android Studio,我的应用程序在安卓4.4.2上运行正常。但是,当我安装该应用程序的其他版本并尝试捕获图像时,该应用程序将崩溃 有人知道怎么解决这个问题吗 这是我的主要活动: public class MainActivity extends AppCompatActivity { private Button button; private String encoded_string, image_name,getUnitCode,getEmpNo,ImageDate,ImageTime;

我的应用程序在安卓4.4.2上运行正常。但是,当我安装该应用程序的其他版本并尝试捕获图像时,该应用程序将崩溃

有人知道怎么解决这个问题吗

这是我的主要活动:

public class MainActivity extends AppCompatActivity {
    private Button button;
    private String encoded_string, image_name,getUnitCode,getEmpNo,ImageDate,ImageTime;
    private Bitmap bitmap;
    private File file;
    private Uri file_uri;
    EditText unitCode,empNo;

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

        // Check KJPhotoAudit Folder Available
        checkMyDirectory();
    }

    public void CaptureImage(View view){
        unitCode = (EditText)findViewById(R.id.unitCode);
        getUnitCode = unitCode.getText().toString().toUpperCase();

        if (TextUtils.isEmpty(getUnitCode)) {
            unitCode.setError("Unit Code is Empty");
            return;
        }

        empNo = (EditText)findViewById(R.id.empNo);
        getEmpNo = empNo.getText().toString().toUpperCase();

        if (TextUtils.isEmpty(getEmpNo)) {
            empNo.setError("Employee Number is Empty");
            return;
        }

        Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        getFileUri();

        i.putExtra(MediaStore.EXTRA_OUTPUT,file_uri);
        startActivityForResult(i,10);
    }

    private void getFileUri(){
        //set date to string
        ImageDate = new SimpleDateFormat("yyyy-MM-dd").format( new Date());
        ImageTime = new SimpleDateFormat("HH:mm:ss").format( new Date());

        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format( new Date());
        image_name = "MY_" +"JPEG_" + timeStamp + ".jpg" ;

        file = new File(Environment.getExternalStoragePublicDirectory("/Myfolder") + File.separator + image_name);

        file_uri = Uri.fromFile(file);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)   {
        if (requestCode == 10 && resultCode == RESULT_OK){
            new Encode_image().execute();
        }
    }

    private class Encode_image extends AsyncTask<Void,Void,Void> {
        @Override
        protected Void doInBackground(Void... voids){

            bitmap = BitmapFactory.decodeFile(file_uri.getPath());
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG,20,stream);

            byte[] array = stream.toByteArray();
            encoded_string = Base64.encodeToString(array,0);
            bitmap.recycle();

            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid){
            makeRequest();
        }
    }

    private void makeRequest() {
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        StringRequest request = new StringRequest(Request.Method.POST, "http:/www.myweb.com/connection.php", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                System.out.println("response"+response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                System.out.println("error"+error);
            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                HashMap<String,String> map = new HashMap<>();
                map.put("encoded_string",encoded_string);
                map.put("image_name",image_name);
                map.put("unit_code",getUnitCode);
                map.put("emp_no",getEmpNo);
                map.put("image_date",ImageDate);
                map.put("image_time",ImageTime);
                return map;
            }
        };    

        System.out.println("req ="+request);
        requestQueue.add(request);

        ResetEmpNumber();
    }

    public void checkMyDirectory(){

        File dir = new File(Environment.getExternalStorageDirectory() + "/Myfolder");
        if(!dir.exists() && !dir.isDirectory()) {
            File folder = new File(Environment.getExternalStorageDirectory().toString()+"/Myfoldert");
            folder.mkdirs();
        }
    }

    public void ResetEmpNumber(){
        //Reset Employee Text Field
        empNo.setText("");
    }
}
public类MainActivity扩展了AppCompatActivity{
私人按钮;
私有字符串编码\字符串、图像\名称、getUnitCode、getEmpNo、ImageDate、ImageTime;
私有位图;
私有文件;
私有Uri文件\u Uri;
编辑文本单位代码,empNo;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//检查KJPhotoAudit文件夹是否可用
checkMyDirectory();
}
公共无效CaptureImage(视图){
unitCode=(EditText)findViewById(R.id.unitCode);
getUnitCode=unitCode.getText().toString().toUpperCase();
if(TextUtils.isEmpty(getUnitCode)){
unitCode.setError(“单位代码为空”);
返回;
}
empNo=(EditText)findViewById(R.id.empNo);
getEmpNo=empNo.getText().toString().toUpperCase();
if(TextUtils.isEmpty(getEmpNo)){
empNo.setError(“员工编号为空”);
返回;
}
意向i=新意向(MediaStore.ACTION\u IMAGE\u CAPTURE);
getFileUri();
i、 putExtra(MediaStore.EXTRA\u输出,文件uri);
startActivityForResult(i,10);
}
私有void getFileUri(){
//将日期设置为字符串
ImageDate=新的SimpleDateFormat(“yyyy-MM-dd”).格式(新日期());
ImageTime=新的SimpleDataFormat(“HH:mm:ss”).format(新日期());
字符串时间戳=新的SimpleDateFormat(“yyyyMMdd_HHmmss”)。格式(新日期();
image_name=“MY_”+“JPEG”+时间戳+”.jpg”;
file=新文件(Environment.getExternalStoragePublicDirectory(“/Myfolder”)+file.separator+image\u name);
file_uri=uri.fromFile(文件);
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(requestCode==10&&resultCode==RESULT\u确定){
新建Encode_image().execute();
}
}
私有类Encode_图像扩展异步任务{
@凌驾
受保护的空位背景(空位…空位){
bitmap=BitmapFactory.decodeFile(file_uri.getPath());
ByteArrayOutputStream=新建ByteArrayOutputStream();
压缩(位图.CompressFormat.JPEG,20,流);
字节[]数组=stream.toByteArray();
encoded_string=Base64.encodeToString(数组,0);
bitmap.recycle();
返回null;
}
@凌驾
受保护的void onPostExecute(void避免){
makeRequest();
}
}
私有void makeRequest(){
RequestQueue RequestQueue=Volley.newRequestQueue(this);
StringRequest=newStringRequest(request.Method.POST,“http://www.myweb.com/connection.php”,new Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
System.out.println(“响应”+响应);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
System.out.println(“错误”+错误);
}
}){
@凌驾
受保护的映射getParams()引发AuthFailureError{
HashMap=newHashMap();
map.put(“编码字符串”,编码字符串);
地图放置(“图像名称”,图像名称);
map.put(“单位代码”,getUnitCode);
地图放置(“emp_no”,getEmpNo);
地图放置(“图像日期”,图像日期);
map.put(“图像时间”,图像时间);
返回图;
}
};    
System.out.println(“req=”+请求);
添加(请求);
ResetEmpNumber();
}
public void checkMyDirectory(){
File dir=新文件(Environment.getExternalStorageDirectory()+“/Myfolder”);
如果(!dir.exists()&&!dir.isDirectory()){
File folder=新文件(Environment.getExternalStorageDirectory().toString()+“/Myfoldert”);
folder.mkdirs();
}
}
公共无效重置编号(){
//重置员工文本字段
empNo.setText(“”);
}
}

您尝试运行应用程序的API级别是什么?错误是什么?@476rick API级别19。这是my build gradle
code
android{compileSdkVersion 25 buildToolsVersion“25.0.0”defaultConfig{applicationId“com.mad.madusanka.myapp”minSdkVersion 19 targetSdkVersion 25 versionCode 1 versionName“1.0”testInstrumentationRunner“android.support.test.runner.AndroidJUnitRunner”}
code
@476rick myapp可以捕获图像,然后按ok。app将不幸停止工作。错误。您能在问题中包含错误吗?