禁用后退按钮在Android中(不工作) [英] Disable back button in Android(Not working)

查看:120
本文介绍了禁用后退按钮在Android中(不工作)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

package com.my.app ;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.Comparator;

import com.my.app .R;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Bitmap.CompressFormat;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Base64;
import android.util.Log;
import android.widget.ImageView;
import android.widget.Toast;

public class ImageInfo extends Activity {

    private static final int CAMERA_PIC_REQUEST = 1111;
    private ImageView mImage;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mImage = (ImageView) findViewById(R.id.camera_image);
        //1
        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, CAMERA_PIC_REQUEST);
    }



    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultCode != RESULT_CANCELED)   {
            if(requestCode == CAMERA_PIC_REQUEST){

                Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
                //  mImage.setImageBitmap(thumbnail);
                //3
                ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
                //4
                File file = new File("data/data/com.my.app /photo.jpg");
                File myDir=new File("data/data/com.my.app /");
                try {
                    String encodedPhotoImage;

                    file.createNewFile();
                    FileOutputStream fo = new FileOutputStream(file);
                    //5
                    fo.write(bytes.toByteArray());
                    fo.close();
                    deleteLatest() ;


                    byte[] photoImgBytes=readPhotoFile();
                    ByteArrayOutputStream bao1 = new ByteArrayOutputStream();

                    Bitmap bitmapPhoto = BitmapFactory.decodeByteArray(photoImgBytes, 0, photoImgBytes.length);
                    bitmapPhoto.compress(Bitmap.CompressFormat.JPEG, 100,bao1);
                    byte[] by = bao1.toByteArray();

                    String by1 = Base64.encodeToString(by, 0);
                    encodedPhotoImage =  URLEncoder.encode(by1);
                    file.delete();

                    if (!myDir.exists()) {
                        myDir.mkdirs();
                    }
                    File encryptedFile=new File("data/data/com.my.app /photo.txt");
                    encryptedFile.createNewFile();
                    FileWriter writer = new FileWriter(encryptedFile);
                    writer.append(encodedPhotoImage);
                    writer.close();
                    //Base64.encodeToString(ba1, Base64.DEFAULT);
                    Intent intent=new Intent(ImageInfo.this,Info.class);
                    startActivity(intent);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        }
    }

    private byte[] readPhotoFile(){         
        String url="data/data/com.my.app /photo.jpg";
        Log.e("","Image is"+url);
        Bitmap bm = BitmapFactory.decodeFile(url);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();  
        bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] b = baos.toByteArray(); 
        return b;
    }

    @Override
    public void onBackPressed() {
        // do nothing.
    }


    private void deleteLatest() {
        File f = new File(Environment.getExternalStorageDirectory() + "/DCIM/Camera" );
        File [] files = f.listFiles();
        Arrays.sort( files, new Comparator<Object>()
                {
            public int compare(Object o1, Object o2) {
                if (((File)o1).lastModified() > ((File)o2).lastModified()) {
                    return -1;
                } else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
                    return 1;
                } else {
                    return 0;
                }
            }

                });
        files[0].delete();
    }
}

这是我的Java文件。我已经停用​​使用后退按钮

This is my java file. I have already disabled the back button using

public void onBackPressed() {
        // do nothing.
    }

但是,当后退按钮是pssed在应用程序$ P $,整个屏幕变黑。请找到屏幕截图。该应用程序挂起,它的唯一途径可以通过任务管理器终止它,然后重新启动它来访问。

But when back button is pressed in the app, the entire screen becomes black. Please find screen shot . The app hangs and the only way it can be accessed by terminating it through task manager and then restarting it.

推荐答案

试试这个$ C $下禁用后退按钮

try this code for disable back button

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    {
        if(keyCode==KeyEvent.KEYCODE_BACK)
        {
            return true;
        }
        else
        {
            return super.onKeyDown(keyCode, event);
        }
    }

<一个href="http://stackoverflow.com/questions/5991319/capture-image-from-camera-and-display-in-activity">Capture图像从摄像机和显示器在活动

这篇关于禁用后退按钮在Android中(不工作)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆