проблема при перемещении изображения с камеры на другую активность в Android - PullRequest
0 голосов
/ 08 апреля 2011

в моем приложении я хочу сделать снимок, и я хочу, чтобы оно было просмотрено в другой деятельности.кодирование для моей камеры работает правильно только для захвата и хранения изображения в SDCard, когда я добавил несколько дополнительных кодов для перемещения захваченного изображения из одного занятия в другое, когда камера не работает.

в logcat следующая ошибка04-08 17: 28: 43.771: ОШИБКА / AndroidRuntime (8717): java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {com.resting.gis / com.resting.gis.Camera}: android.content.ActivityNotFoundException: Невозможно найти явный класс действий {com.resting.gis / View};объявили ли вы это действие в файле AndroidManifest.xml?

, но в файле манифеста было упомянуто действие View

Ниже приведен мой код для захвата изображения

protected static final int TAKE_RECEIPT = 0;
    private Uri imageCaptureUri;
    private String filename;
    private Runnable submitReceiptRunnable = new Runnable() 
    {
        public void run() 
        {
            publishReceipt();
        }

        private void publishReceipt() 
        {

        }
    };

    private ProgressDialog progressDialog;
    OutputStream outStream;

    Intent myIntent;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.camera);

        takePictureFromCamera();
    }
            private void takePictureFromCamera() 
            {
                 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                    imageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "tmp_receipt_"
                            + String.valueOf(System.currentTimeMillis()) + ".jpg"));

                    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageCaptureUri);
                    intent.putExtra("return-data", true); 

                    startActivityForResult(intent, TAKE_RECEIPT);

                    String path =  String.format("/sdcard/%d.jpg",System.currentTimeMillis());
                    try 
                    {
                        outStream = new FileOutputStream(path);
                        doFileUpload(path);
                        Log.e("Camera",""+outStream);
                    }
                    catch (FileNotFoundException e) 
                    {
                        e.printStackTrace();
                    }

                    Intent i=new Intent();
                    i.setClassName("com.resting.gis","View");
                    i.putExtra("image", path);
                    startActivity(i);

            }

            private void takeReceiptCallback(int resultCode, Intent data)
            {
                if (resultCode == Activity.RESULT_OK) 
                {
                    submitReceipt();
                }
            }

            private void submitReceipt() 
            {
                Thread thread = new Thread(null, submitReceiptRunnable);
                thread.start();
//              progressDialog = ProgressDialog.show(this, "Please wait...", "Publishing receipt ...", true);               
            }

            private String getBase64Receipt() {
                try {
                    InputStream inputStream = getContentResolver().openInputStream(imageCaptureUri);
//                  byte[] bytes = CommonUtil.getBytesFromInputStream(inputStream);
//                  return Base64.encodeBytes(bytes);//(selectedImage.getPath().getBytes());     
                }
                catch (IOException e) 
                {
                    Log.e("getbase64Reciept", ""+e);
                }

                return null;
            }

            private void publishReceipt() 
            {
                String receipt = getBase64Receipt();
            }

Пожалуйста, помогите мне найти, где я иду не так

1 Ответ

1 голос
/ 08 апреля 2011

Возможно, вы не объявили второе действие в своем AndroidManifest.xml.Все действия должны быть объявлены там, чтобы быть доступными.

Если вы сделали это, то я предлагаю попытаться создать намерение другим, менее проблемным способом.

new Intent(this, com.resting.gis.View.class);

первый параметр - это используемый контекст.Второй - это класс Activity, который нужно запустить.Когда это внутри вашего приложения, это, безусловно, самый простой и наименее подверженный ошибкам способ начать действие.Я сделал предположение, что com.resting.gis.View - это название вашего второго занятия.

http://developer.android.com/guide/topics/manifest/manifest-intro.html

...