2016-08-17 22 views
0

ギャレーから画像を選択して処理しようとしていますが、メインアクティビティのボタンを押して処理しています。新しいアクティビティが開始されます。自分のイメージを選択したいときは、ギャラリーを開いてイメージを選ぶようにしてください。これはどういうふうに機能しないのでしょうか(以前はうまくいきましたが、インテントが開始しない

:私は、次の権限を使用

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

なぜ0のケースでstartActivityが2つあるのですか? – Stefan

+0

最初にギャラリーを起動してイメージを選択し、もう1つはメインアクティビティに戻ります。もっと良い方法があることはわかっていますが、それは現在私の問題ではありません – 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

それらのうちの1人がギャラリーを起動してメインアクティビティに戻りますが、それはもっと効率的に行うことができますが、今は私の問題ではありません。 – DirtyAxe

+0

@DirtyAxeですが、startActivity(intent)を書く必要はありません。画像を選択すると、アクティビティに戻ります –

関連する問題