2012-07-20 105 views
0

我想分享图片,但我不确定如何获取图像的URI在这里:获取图片URI

imageView.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    Intent intent = new Intent(Intent.ACTION_SEND); 
    intent.setType("image/jpeg"); 
    intent.putExtra(Intent.EXTRA_STREAM, [image URI]); 
    startActivity(Intent.createChooser(intent, "Share image with")); 
    } 
} 

下面我都当上取出的代码。

公共类ImagePagerActivity扩展BaseActivity {

private ViewPager pager; 
private DisplayImageOptions options; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.ac_image_pager); 

    Context context = getSupportActionBar().getThemedContext(); 
    ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context, R.array.locations, R.layout.sherlock_spinner_item); 
    list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item); 

    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    getSupportActionBar().setListNavigationCallbacks(list, this); 
    getSupportActionBar().setSelectedNavigationItem(1); 

    Bundle bundle = getIntent().getExtras(); 
    String[] imageUrls = bundle.getStringArray(Extra.IMAGES); 
    int pagerPosition = bundle.getInt(Extra.IMAGE_POSITION, 0); 

    options = new DisplayImageOptions.Builder() 
     .showImageForEmptyUri(R.drawable.image_for_empty_url) 
     .cacheOnDisc() 
     .imageScaleType(ImageScaleType.EXACT) 
     .build(); 

    pager = (ViewPager) findViewById(R.id.pager); 
    pager.setAdapter(new ImagePagerAdapter(imageUrls)); 
    pager.setCurrentItem(pagerPosition); 
} 

@Override 
protected void onStop() { 
    imageLoader.stop(); 
    super.onStop(); 
} 

private class ImagePagerAdapter extends PagerAdapter { 

    private String[] images; 
    private LayoutInflater inflater; 

    ImagePagerAdapter(String[] images) { 
     this.images = images; 
     inflater = getLayoutInflater(); 
    } 

    @Override 
    public void destroyItem(View container, int position, Object object) { 
     ((ViewPager) container).removeView((View) object); 
    } 

    @Override 
    public void finishUpdate(View container) { 
    } 

    @Override 
    public int getCount() { 
     return images.length; 
    } 

    @Override 
    public Object instantiateItem(View view, int position) { 
     final FrameLayout imageLayout = (FrameLayout) inflater.inflate(R.layout.item_pager_image, null); 
     final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image); 
     final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading); 

     imageView.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       Intent intent = new Intent(Intent.ACTION_SEND); 
       intent.setType("image/jpeg"); 
       Uri uri = Uri.fromFile(null); 
       intent.putExtra(Intent.EXTRA_STREAM, uri); 
       startActivity(Intent.createChooser(intent, "Share image with")); 
       } 
      }); 

     imageLoader.displayImage(images[position], imageView, options, new ImageLoadingListener() { 
      @Override 
      public void onLoadingStarted() { 
       spinner.setVisibility(View.VISIBLE); 
      } 

      @Override 
      public void onLoadingFailed(FailReason failReason) { 
       String message = null; 
       switch (failReason) { 
        case IO_ERROR: 
         message = "Input/Output error"; 
         break; 
        case OUT_OF_MEMORY: 
         message = "Out Of Memory error"; 
         break; 
        case UNKNOWN: 
         message = "Unknown error"; 
         break; 
       } 
       Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show(); 

       spinner.setVisibility(View.GONE); 
       imageView.setImageResource(android.R.drawable.ic_delete); 
      } 

      @Override 
      public void onLoadingComplete() { 
       spinner.setVisibility(View.GONE); 
       Animation anim = AnimationUtils.loadAnimation(ImagePagerActivity.this, R.anim.fade_in); 
       imageView.setAnimation(anim); 
       anim.start(); 
      } 

      @Override 
      public void onLoadingCancelled() { 
       // Do nothing 
      } 
     }); 

     ((ViewPager) view).addView(imageLayout, 0); 
     return imageLayout; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view.equals(object); 
    } 

    @Override 
    public void restoreState(Parcelable state, ClassLoader loader) { 
    } 

    @Override 
    public Parcelable saveState() { 
     return null; 
    } 

    @Override 
    public void startUpdate(View container) { 
    } 
} 

@Override 
public boolean onNavigationItemSelected(int itemPosition, long itemId) { 

    if (itemPosition == 0){ 
     Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
     startActivity(intent); 
    } 

    getSupportActionBar().setSelectedNavigationItem(1); 
    return true; 
} 
} 

如果有人能够帮助这将是伟大的!

回答

1

这为u如何在绘制得到的URI的图像:

Uri path = Uri.parse("android.resource://your.package.name/" + R.drawable.your_image); 
+0

你能不能给我,我会用我的使用代码的代码?我是android新手,我不知道该怎么做。 – GreekOphion 2012-07-20 06:51:00

+0

这将帮助你:http://stackoverflow.com/a/3553102/735675 – pixelscreen 2012-07-20 06:56:18

+0

问题是idk图像被保存,所以idk如何访问它。 – GreekOphion 2012-07-20 06:57:26