0

ギャラリーから画像を選択したい。次のコードを確認してください。

public class Camera extends Activity {


     private static final int SELECT_PICTURE = 1;
     private String selectedImagePath;
     WebView localview;

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

    public void ChoosePhoto(WebView webview)
    {
                localview=webview;
            Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 
    }   

    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (resultCode == RESULT_OK) {
            if (requestCode == SELECT_PICTURE)
            {
                Uri selectedImageUri = data.getData();
                selectedImagePath = getPath(selectedImageUri);
                try {
                    FileInputStream fileis=new FileInputStream(selectedImagePath);
                    BufferedInputStream bufferedstream=new BufferedInputStream(fileis);
                    byte[] bMapArray= new byte[bufferedstream.available()];
                    bufferedstream.read(bMapArray);
                    localview.loadUrl("javascript:ReceivePhoto(\""+bMapArray+"\")");
                    if (fileis != null) 
                    {
                        fileis.close();
                    }
                    if (bufferedstream != null) 
                    {
                        bufferedstream.close();
                    }
                } catch (FileNotFoundException e) {                 
                    e.printStackTrace();
                } catch (IOException e) {                   
                    e.printStackTrace();
                }               
            }
        }
    }

    public String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

}

マニフェストファイルにアクティビティを含めました。しかし、画像を選択した後、OnActivityResult は呼び出されません。

誰でも私を助けてもらえますか?

4

2 に答える 2

1

これは、ギャラリーから画像を選択するために私が行うことです:

活動開始:

            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);  
            intent.setType("image/*");
            startActivityForResult(intent, Comun.GALLERY_PIC_REQUEST);

キャプチャ アクティビティの結果:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode == Activity.RESULT_OK) {
        mUriImagen = data.getData();

             // Do something

    }
}

編集:不要なコードを削除しました。

于 2012-04-25T05:53:35.413 に答える
0

これを試してみましょう。

カメラクラス:

public class Camera {

private Activity mParentActivity;
private OnPhotoChosenListener mPhotoChosenListener;

    // Declare an Iterface for comunicating with Activity
    interface OnPhotoChosenListener{
        public void onPhotoChosen();
    }


public Camera(Activity parentActivity) {
    mParentActivity = parentActivity;
}

public void ChoosePhoto(WebView webview)
{
    mPhotoChosenListener.onPhotoChosen();
}   

あなたの活動:

public class MyActivity extends Activity implements OnPhotoChosenListener{

Camera myCamera;
private static final int SELECT_PICTURE = 1;
private String selectedImagePath;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    myCamera = new Camera(this);
}

public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE)
        {
            Uri selectedImageUri = data.getData();
            selectedImagePath = getPath(selectedImageUri);
            try {
                FileInputStream fileis=new FileInputStream(selectedImagePath);
                BufferedInputStream bufferedstream=new BufferedInputStream(fileis);
                byte[] bMapArray= new byte[bufferedstream.available()];
                bufferedstream.read(bMapArray);
                localview.loadUrl("javascript:ReceivePhoto(\""+bMapArray+"\")");
                if (fileis != null) 
                {
                    fileis.close();
                }
                if (bufferedstream != null) 
                {
                    bufferedstream.close();
                }
            } catch (FileNotFoundException e) {                 
                e.printStackTrace();
            } catch (IOException e) {                   
                e.printStackTrace();
            }               
        }
    }
}

@Override
public void onPhotoChosen(){
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);  
    intent.setType("image/*");
    startActivityForResult(intent, Comun.GALLERY_PIC_REQUEST);
}

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

残りの唯一のことは、どのように呼び出すかです

ChooseFoto(Webview webview)

方法。これは私がそれを行う方法をよく理解していない部分です。多分あなたは解決策を見つけました。

編集:インターフェースを実装するために追加されたコード。

于 2012-04-27T11:16:21.440 に答える