Java Android 4.4.2完全运行我的应用程序,但其他版本不运行
我的应用程序在安卓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;
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 gradlecode
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将不幸停止工作。错误。您能在问题中包含错误吗?