-1

我正在嘗試使用onActivityResult來啓動Android圖庫,以便根據所選ImageButton顯示照片或視頻。onActivityResult實現不能按預期運行

問題是,當試圖打開一張試圖啓動視頻播放器的照片時,我不確定原因。

P.S.

可以使用視頻ImageButton成功播放視頻。

private static final int SELECT_PHOTO = 1; 
private static final int SELECT_VIDEO = 1; 


ImageButton pb = (ImageButton) findViewById(R.id.photos); 
    pb.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      intent.addCategory(Intent.CATEGORY_OPENABLE); 
      startActivityForResult(intent, SELECT_PHOTO); 
     } 
    }); 

    ImageButton vb = (ImageButton) findViewById(R.id.video); 
    vb.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      Intent intentGallery = new Intent(
        Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      intentGallery.setType("video/*"); 
      startActivityForResult(intentGallery, 1); 

     } 

    }); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    // if (resultCode == Activity.RESULT_OK) { 
    if (requestCode == SELECT_VIDEO) { 
     { 
      Uri selectedVideo = data.getData(); 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setDataAndType(selectedVideo, "video/*"); 
      startActivity(intent); 

     } 
    } else if (requestCode == SELECT_PHOTO) { 

     Uri selectedImage = data.getData(); 
     Intent intent = new Intent(); 
     intent.setAction(Intent.ACTION_VIEW); 
     intent.setDataAndType(selectedImage, "image/*"); 
     startActivity(intent); 
    } 
+0

也許你的請求代碼搞砸? – Blackbelt

+0

SELECT_PHOTO =?因爲你正在通過請求代碼「1」的視頻,希望也不等於1 – user2450263

+0

標題暗示Google搞砸了活動結果並且沒有人看到這個bug直到現在呢?滑稽。 – shkschneider

回答

0
private static final int SELECT_PHOTO = 1; 
private static final int SELECT_VIDEO = 1; 

他們需要的是不同的,具有值「1」是指他們去到相同的「如果」 onActivityResult()

而且,其僅僅回放視頻作爲是你第一個「如果」內部onActivityResult()條件,這將永遠結束了爲真:

startActivityForResult(intentGallery, 1); 
startActivityForResult(intent, SELECT_PHOTO); 

同時通過適當的,你對它們進行比較。試試看:

private static final int SELECT_PHOTO = 1; 
private static final int SELECT_VIDEO = 2; 

startActivityForResult(intentGallery, SELECT_VIDEO); 
startActivityForResult(intent, SELECT_PHOTO); 

應該得到some help from this

0

SLECT_VIDEO和SELECT_PHOTO不能同....