2014-05-23 100 views
4

朋友你好....我想打一個對話屏幕例如WhatsApp頭像對話框的屏幕

我目前正在使用隱式意圖,我想表明我的對話框例如WhatsApp(做一個對話頭像畫面),並在這個屏幕whatsApp正在使用額外的領域命名爲「刪除照片」。當我嘗試使相同類型的屏幕對話框,然後我無法添加此額外的字段(「刪除照片」)。我已經完成了所有的代碼。它在像對話框(圖庫,照片,相機)對話框中的三個選項工作正常,我無法在onActivityResult()中處理這些。我發送了我嘗試過的所有源代碼,但我無法找到解決方案。 PLZ .....朋友幫我從這裏出來。

在這段代碼我只是創建一個命名爲openFileChooser()在我所編寫的所有代碼創建對話屏幕的方法和處理這一成果在onActivityResult()

這裏是我的代碼

ProfilePhotoActivity.java

public class ProfilePhotoActivity extends Activity implements OnClickListener{ 
    ImageButton back, editPhoto, selectAction; 
    ImageView imgCamera; 
    private static final int FILECHOOSER_RESULTCODE = 2888; 
    protected static final int CAMERA_REQUEST = 0; 
    protected static final int GALLERY_PICTURE = 1; 
    private Uri mCapturedImageURI = null; 
    Intent intent; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.activity_profilephoto); 

     back=(ImageButton)findViewById(R.id.btn_back); 
     editPhoto=(ImageButton)findViewById(R.id.ibEditPhoto); 
     selectAction=(ImageButton)findViewById(R.id.ibSelectAction); 

     imgCamera=(ImageView)findViewById(R.id.imvProfilePhoto); 

     editPhoto.setOnClickListener(this); 
     selectAction.setOnClickListener(this); 
     back.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 

     switch (v.getId()) { 
     case R.id.btn_back: 
      ProfilePhotoActivity.this.finish(); 
      break; 

     case R.id.ibEditPhoto: 
      openFileChooser(null, null); 
     // startDialog(); 


      break; 
     case R.id.ibSelectAction: 
      break; 
     } 
    } 

    public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType){ 

      try{  

      // Create AndroidExampleFolder at sdcard 

      File imageStorageDir = new File(
       Environment.getExternalStoragePublicDirectory(
       Environment.DIRECTORY_PICTURES) 
       , "AndroidExampleFolder"); 

      if (!imageStorageDir.exists()) { 
       // Create AndroidExampleFolder at sdcard 
       imageStorageDir.mkdirs(); 
      } 

      // Create camera captured image file path and name 
      File file = new File(
       imageStorageDir + File.separator + "IMG_" 
       + String.valueOf(System.currentTimeMillis()) 
       + ".jpg"); 

      mCapturedImageURI = Uri.fromFile(file); 

      // Camera capture image intent 
      final Intent captureIntent = new Intent(
       android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

      captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 

      Intent i = new Intent(Intent.ACTION_PICK); 
      // i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("image/*"); 

      // Create file chooser intent 
      Intent chooserIntent = Intent.createChooser(i, "Image Chooser"); 

      // Set camera intent to file chooser 
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS 
       , new Parcelable[] { captureIntent }); 

      // On select image call onActivityResult method of activity 
      startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE); 

      } 
      catch(Exception e){ 
      Toast.makeText(getBaseContext(), "Exception:"+e, 
       Toast.LENGTH_LONG).show(); 
      } 

      } 
    protected void onActivityResult(int requestCode, int resultCode,Intent intent) { 

      if(requestCode==FILECHOOSER_RESULTCODE) 
      { 
       if (requestCode == GALLERY_PICTURE) 
        { 
         if (resultCode == RESULT_OK) 
         { 
          if (intent != null) 
          {     
           // our BitmapDrawable for the thumbnail 
           BitmapDrawable bmpDrawable = null; 

           // try to retrieve the image using the data from the intent 
           Cursor cursor = getContentResolver().query(intent.getData(), null, null, null, null); 

           if (cursor != null) 
           { 
            cursor.moveToFirst(); 

            int idx = cursor.getColumnIndex(ImageColumns.DATA); 
            String fileSrc = cursor.getString(idx); 
            Bitmap galleryBitmap = BitmapFactory.decodeFile(fileSrc); // load preview image                   
            galleryBitmap = Bitmap.createScaledBitmap(galleryBitmap, 200, 200, true); 


            String filePath = Environment.getExternalStorageDirectory() 
            .getAbsolutePath()+"/TimeChat/image/"+System.currentTimeMillis()+".jpg"; 

            //imgCamera.setRotation(0); 
            imgCamera.setImageBitmap(galleryBitmap); 
//         writeToFile(filePath, galleryBitmap); 
           } 
           else 
           { 
            bmpDrawable = new BitmapDrawable(getResources(), intent.getData().getPath()); 
            imgCamera.setImageDrawable(bmpDrawable); 
           } 
          } 
          else 
          { 
           Toast.makeText(getApplicationContext(), "Cancelled", Toast.LENGTH_SHORT).show(); 
          } 
         } 
         else if (resultCode == RESULT_CANCELED) 
         { 
          Toast.makeText(getApplicationContext(), "Cancelled", Toast.LENGTH_SHORT).show(); 
         } 
        } 
        else if (requestCode == CAMERA_REQUEST) 
        { 
         if (resultCode == RESULT_OK) 
         { 
          if (intent.hasExtra("data")) 
          {     
           // retrieve the bitmap from the intent 
           Bitmap cameraBitmap = (Bitmap) intent.getExtras().get("data"); 

            String filePath = Environment.getExternalStorageDirectory() 
           .getAbsolutePath()+"/TimeChat/image/"+System.currentTimeMillis()+".jpg"; 

           // update the image view with the bitmap 
           imgCamera.setImageBitmap(cameraBitmap); 
          // writeToFile(filePath, circleBitmap); 

          } 
          else if (intent.getExtras() == null) { 

           Toast.makeText(getApplicationContext(), "No extras to retrieve!", Toast.LENGTH_SHORT).show(); 

           BitmapDrawable thumbnail = new BitmapDrawable(getResources(), intent.getData().getPath()); 

           // update the image view with the newly created drawable 
           imgCamera.setImageDrawable(thumbnail); 

          } 

         } 
         else if (resultCode == RESULT_CANCELED) { 
          Toast.makeText(getApplicationContext(), "Cancelled", Toast.LENGTH_SHORT).show(); 
         } 
        } 
      } 
     } 


    @Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 
     super.onBackPressed(); 
     ProfilePhotoActivity.this.finish(); 
    } 

} 
+0

可能靈魂 http://stackoverflow.com/questions/4455558/allow-user-to-select-camera-or-gallery-for-image – Swapnil

回答

1

這看起來將是一個問題:

if(requestCode==FILECHOOSER_RESULTCODE) 
      { 
       if (requestCode == GALLERY_PICTURE) 

除非FILECHOOSER_RESULTCODE和GALLERY_PICTURE是相同的整數,那麼語句永遠不會通過。