2016-08-17 1 views
0

Я пытаюсь выбрать изображение с камбуза, а затем обработать его, я делаю это, нажав кнопку на основной операции, которая затем запускает новое действие, в котором вы можете выбрать либо создайте изображение или выберите свой собственный, и когда я захочу выбрать свой собственный образ, он должен открыть галерею и позволить мне выбрать изображение, как получилось, что это не работает каким-то образом (хотя это действительно работало раньше, я думаю, что я просто что-то сломал, но не знаю, что)Intent не запускается

мой код:

package il.popov.ecptest; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class select_activity extends ListActivity { 

ListView listView; 
Intent intent; 


@ 
Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    String[] StringArray = { 
     "Select your own", "image1", "image2", "image3", "image4", "None" 
    }; 
    setListAdapter(new ArrayAdapter <String> (this, R.layout.support_simple_spinner_dropdown_item, StringArray)); 
    intent = new Intent(this.getApplicationContext(), main_activity.class); 
    listView = getListView(); 
    listView.setTextFilterEnabled(true); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@ 
     Override 
     public void onItemClick(AdapterView <? > arg0, View arg1, int position, long arg3) { 
      processClick(position); 
     } 
    }); 
} 



public void processClick(int position) { 
    switch (position) { 
     case 0: 
      //Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
      //startActivity(i); 

      Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
      photoPickerIntent.setType("image/*"); 
      startActivityForResult(photoPickerIntent, 237); 

      //Returns to main activity , DO NOT CHANGE 
      startActivity(intent); 
      break; 
     case 1: 
      midClass.img = BitmapFactory.decodeResource(getResources(), R.drawable.image1); 
      midClass.isImageSelected = true; 
      startActivity(intent); 
      break; 
     case 2: 
      midClass.img = BitmapFactory.decodeResource(getResources(), R.drawable.image2); 
      midClass.isImageSelected = true; 
      startActivity(intent); 
      break; 
     case 3: 
      midClass.img = BitmapFactory.decodeResource(getResources(), R.drawable.image3); 
      midClass.isImageSelected = true; 
      startActivity(intent); 
      break; 
     case 4: 
      midClass.img = BitmapFactory.decodeResource(getResources(), R.drawable.image4); 
      midClass.isImageSelected = true; 
      startActivity(intent); 
      break; 
     case 5: 
      midClass.img = null; 
      midClass.isImageSelected = false; 
      startActivity(intent); 
      break; 
     default: 
      midClass.toastificate("Error in selection process"); 
      midClass.isImageSelected = false; 
      midClass.img = null; 
      break; 

    } 
} 



@ 
Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    midClass.toastificate("checking result"); 
    if (requestCode == 237 && resultCode == RESULT_OK && null != data) { 
     midClass.toastificate("Processing image"); 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { 
      MediaStore.Images.Media.DATA 
     }; 

     Cursor cursor = getContentResolver().query(selectedImage, 
      filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     BitmapFactory.Options opt = new BitmapFactory.Options(); 
     opt.inMutable = true; 
     midClass.img = BitmapFactory.decodeFile(picturePath, opt); 
     if (midClass.img != null) { 
      midClass.isImageSelected = true; 
     } else { 
      midClass.isImageSelected = false; 
     } 

    } 
} 
} 

я использовал следующие разрешения:

<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.BLUETOOTH" /> 
+1

Почему у вас есть две startActivity в случае 0? – Stefan

+0

Сначала начинается галерея, чтобы выбрать изображение, а другая возвращается к основной деятельности, я знаю, что есть лучший способ сделать это, но сейчас это не моя проблема. – DirtyAxe

+0

Это не то, что она делает. Он начинает сборщик вашей галереи, а также начинает основную деятельность поверх этого. Так что ничего не происходит. – Stefan

ответ

0
case 0: 
     //Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
     //startActivity(i); 

     Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
     photoPickerIntent.setType("image/*"); 
     startActivityForResult(photoPickerIntent, 237); 

     //Returns to main activity , DO NOT CHANGE 
     startActivity(intent);// Remove this line in your case 0 
+0

Один из них начинает галерею, а затем возвращается к основной деятельности, я знаю, что это можно сделать более эффективно, но это не моя проблема прямо сейчас – DirtyAxe

+0

@DirtyAxe, но не нужно писать startActivity (намерение). когда вы выбираете изображение, оно возвращается к активности –