Partage
  • Partager sur Facebook
  • Partager sur Twitter

android share viewpager

    12 juin 2013 à 9:27:06

    bonjour,

    j'ai utilisé ce tuto https://github.com/nostra13/Android-Universal-Image-Loader pour récupérer des images placées sur un serveur distant et ensuite faire un défilement par un viewpager. là je me trouve avec un soucis, j'aimerai pouvoir partager ces images sur les différents réseaux sociaux ainsi que par email sauf que quand j'essaie d'envoyer une des images dans un mail , j'ai bien le cadre de la pièce jointe qui m'affiche bien le bon numéro de l'image (même quand je switch pour prendre une autre photo) mais j'ai pas d'image dans ce cadre pourtant le nom y est et quand j'envoie pour essayer de voir si elle a été prise en compte je ne reçois que le message sans image.

    concernant facebook, je ne vois ni le message que je veux lui faire envoyer ni l'image à envoyer

    et concernant twitter , je reçois un message me disant : impossible de charger l'image.

    Quelqu'un aurait-il une idée pour partager des image provenant d'un viewpager avec image sur serveur ??

    voici mon code :

    public class ImagePagerActivityAngola extends BaseActivityAngola {

        private static final String STATE_POSITION = "STATE_POSITION";

        DisplayImageOptions options;

        ViewPager pager;
        ImageView commande,facebook_share,twitter_share;
        static String[] imageUrls;
        int j;

        public 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.ac_image_pager);

            j = getIntent().getExtras().getInt("position");

            Bundle bundle = getIntent().getExtras();
            imageUrls = bundle.getStringArray(ExtraAngola.IMAGESANGOLA);
            int pagerPosition = bundle.getInt(ExtraAngola.IMAGE_POSITIONANGOLA, 0);

            if (savedInstanceState != null) {
                pagerPosition = savedInstanceState.getInt(STATE_POSITION);
            }

            options = new DisplayImageOptions.Builder()
            .showImageForEmptyUri(R.drawable.ic_empty)
            .showImageOnFail(R.drawable.ic_error)
            .resetViewBeforeLoading()
            .cacheOnDisc()
            .imageScaleType(ImageScaleType.EXACTLY)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .displayer(new FadeInBitmapDisplayer(300))
            .build();

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

            commande = (ImageView) findViewById(R.id.buy);
            commande.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //On instancie notre layout en tant que View
                    LayoutInflater factory = LayoutInflater.from(ImagePagerActivityAngola.this);
                    final View alertDialogView = factory.inflate(R.layout.commande, null);

                    //Création de l'AlertDialog
                    AlertDialog.Builder adb = new AlertDialog.Builder(ImagePagerActivityAngola.this);

                    //On affecte la vue personnalisé que l'on a crée à notre AlertDialog
                    adb.setView(alertDialogView);

                    //On donne un titre à l'AlertDialog
                    adb.setTitle(getString(R.string.commander));                    

                    //On affecte un bouton "inscrire" à notre AlertDialog et on lui affecte un évènement
                    adb.setPositiveButton(getString(R.string.contact), new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                            final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);

                            emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"ericlfg@me.com"});
                            emailIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.sujet));
                            emailIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.text_commande));               
                            emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                            emailIntent.setType("plain/text");
                            emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://"+getPackageName()+"/"+imageUrls[j]));

                            try {                           
                                startActivity(Intent.createChooser(emailIntent, getString(R.string.envoyer)));
                            } catch (android.content.ActivityNotFoundException ex) {
                                Toast.makeText(ImagePagerActivityAngola.this, R.string.email_non_configure, Toast.LENGTH_SHORT).show();
                            }
                        }                   
                    });

                    //On crée un bouton "desinscrire" à notre AlertDialog et on lui affecte un évènement
                    adb.setNegativeButton(getString(R.string.annuler), new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    });
                    adb.show();
                }
            });

            facebook_share = (ImageView) findViewById(R.id.facebook_share);
            facebook_share.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    Uri pngUri = Uri.parse("android.resource://"+getPackageName()+"/"+imageUrls);
                    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
                    shareIntent.setType("image/jpeg");
                    shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"I like this Eric Lafforgue picture. Sample from Android app ");
                    shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,"I like this Eric Lafforgue picture. Sample from Android app");
                    shareIntent.putExtra(android.content.Intent.EXTRA_STREAM,pngUri);
                    PackageManager pm = getApplicationContext().getPackageManager();
                    List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
                    for (final ResolveInfo app : activityList) {
                        if ((app.activityInfo.name).contains("facebook")) {
                            final ActivityInfo activity = app.activityInfo;
                            final ComponentName name = new ComponentName(
                                    activity.applicationInfo.packageName,
                                    activity.name);
                            shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
                            shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                            shareIntent.setComponent(name);
                            startActivity(shareIntent);
                        }                   
                    }               
                }                           
            });

            twitter_share = (ImageView) findViewById(R.id.twitter_share);
            twitter_share.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    Uri pngUri = Uri.parse("android.resource://"+getPackageName()+"/"+imageUrls[j]);
                    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
                    shareIntent.setType("image/jpeg");
                    shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Eric Lafforgue pix from https://www.google.com");
                    shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,"Eric Lafforgue pix from https://www.google.com");
                    shareIntent.putExtra(android.content.Intent.EXTRA_STREAM,pngUri);
                    PackageManager pm = getApplicationContext().getPackageManager();
                    List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
                    for (final ResolveInfo app : activityList) {
                        if ((app.activityInfo.name).contains("twitter")) {
                            final ActivityInfo activity = app.activityInfo;
                            final ComponentName name = new ComponentName(
                                    activity.applicationInfo.packageName,
                                    activity.name);
                            shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
                            shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                            shareIntent.setComponent(name);
                            startActivity(shareIntent);
                        }
                    }
                }                           
            });
        }

        @Override
        public void onSaveInstanceState(Bundle outState) {
            outState.putInt(STATE_POSITION, pager.getCurrentItem());
        }

        private class ImagePagerAdapter extends PagerAdapter {

            private String[] images;
            private LayoutInflater inflater;

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

            @Override
            public void destroyItem(ViewGroup 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(ViewGroup view, int position) {
                View imageLayout = inflater.inflate(R.layout.item_pager_image, view, false);
                ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);
                final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);

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

                    @Override
                    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                        String message = null;
                        switch (failReason.getType()) {
                        case IO_ERROR:
                            message = "Input/Output error";
                            break;
                        case DECODING_ERROR:
                            message = "Image can't be decoded";
                            break;
                        case NETWORK_DENIED:
                            message = "Downloads are denied";
                            break;
                        case OUT_OF_MEMORY:
                            message = "Out Of Memory error";
                            break;
                        case UNKNOWN:
                            message = "Unknown error";
                            break;
                        }
                        Toast.makeText(ImagePagerActivityAngola.this, message, Toast.LENGTH_SHORT).show();

                        spinner.setVisibility(View.GONE);
                    }

                    @Override
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                        spinner.setVisibility(View.GONE);
                    }
                });

                ((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) {
            }
        }
    }

    • Partager sur Facebook
    • Partager sur Twitter
      12 juin 2013 à 9:28:33

      public class ImagePagerActivityAngola extends BaseActivityAngola {
      
      	private static final String STATE_POSITION = "STATE_POSITION";
      
      	DisplayImageOptions options;
      
      	ViewPager pager;
      	ImageView commande,facebook_share,twitter_share;
      	static String[] imageUrls;
      	int j;
      
      	public 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.ac_image_pager);
      
      		j = getIntent().getExtras().getInt("position");
      
      		Bundle bundle = getIntent().getExtras();
      		imageUrls = bundle.getStringArray(ExtraAngola.IMAGESANGOLA);
      		int pagerPosition = bundle.getInt(ExtraAngola.IMAGE_POSITIONANGOLA, 0);
      
      		if (savedInstanceState != null) {
      			pagerPosition = savedInstanceState.getInt(STATE_POSITION);
      		}
      
      		options = new DisplayImageOptions.Builder()
      		.showImageForEmptyUri(R.drawable.ic_empty)
      		.showImageOnFail(R.drawable.ic_error)
      		.resetViewBeforeLoading()
      		.cacheOnDisc()
      		.imageScaleType(ImageScaleType.EXACTLY)
      		.bitmapConfig(Bitmap.Config.RGB_565)
      		.displayer(new FadeInBitmapDisplayer(300))
      		.build();
      
      		pager = (ViewPager) findViewById(R.id.pager);
      		pager.setAdapter(new ImagePagerAdapter(imageUrls));
      		pager.setCurrentItem(pagerPosition);
      
      		commande = (ImageView) findViewById(R.id.buy);
      		commande.setOnClickListener(new OnClickListener() {
      
      			@Override
      			public void onClick(View v) {
      				// TODO Auto-generated method stub
      				//On instancie notre layout en tant que View
      				LayoutInflater factory = LayoutInflater.from(ImagePagerActivityAngola.this);
      				final View alertDialogView = factory.inflate(R.layout.commande, null);
      
      				//Création de l'AlertDialog
      				AlertDialog.Builder adb = new AlertDialog.Builder(ImagePagerActivityAngola.this);
      
      				//On affecte la vue personnalisé que l'on a crée à notre AlertDialog
      				adb.setView(alertDialogView);
      
      				//On donne un titre à l'AlertDialog
      				adb.setTitle(getString(R.string.commander));		 	        
      
      				//On affecte un bouton "inscrire" à notre AlertDialog et on lui affecte un évènement
      				adb.setPositiveButton(getString(R.string.contact), new DialogInterface.OnClickListener() {
      					public void onClick(DialogInterface dialog, int which) {
      
      						final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
      
      						emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"ericlfg@me.com"});
      						emailIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.sujet));
      						emailIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.text_commande));				
      						emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
      						emailIntent.setType("plain/text");
      						emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://"+getPackageName()+"/"+imageUrls[j]));
      
      						try {							
      							startActivity(Intent.createChooser(emailIntent, getString(R.string.envoyer)));
      						} catch (android.content.ActivityNotFoundException ex) {
      							Toast.makeText(ImagePagerActivityAngola.this, R.string.email_non_configure, Toast.LENGTH_SHORT).show();
      						}
      					}					
      				});
      
      				//On crée un bouton "desinscrire" à notre AlertDialog et on lui affecte un évènement
      				adb.setNegativeButton(getString(R.string.annuler), new DialogInterface.OnClickListener() {
      					public void onClick(DialogInterface dialog, int which) {
      
      					} 
      				});
      				adb.show();
      			}
      		});
      
      		facebook_share = (ImageView) findViewById(R.id.facebook_share);
      		facebook_share.setOnClickListener(new OnClickListener() {
      
      			@Override
      			public void onClick(View v) {
      				// TODO Auto-generated method stub
      
      				Uri pngUri = Uri.parse("android.resource://"+getPackageName()+"/"+imageUrls);
      				Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
      				shareIntent.setType("image/jpeg");
      				shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"I like this Eric Lafforgue picture. Sample from Android app ");
      				shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,"I like this Eric Lafforgue picture. Sample from Android app");
      				shareIntent.putExtra(android.content.Intent.EXTRA_STREAM,pngUri);
      				PackageManager pm = getApplicationContext().getPackageManager();
      				List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
      				for (final ResolveInfo app : activityList) {
      					if ((app.activityInfo.name).contains("facebook")) {
      						final ActivityInfo activity = app.activityInfo;
      						final ComponentName name = new ComponentName(
      								activity.applicationInfo.packageName,
      								activity.name);
      						shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
      						shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
      								| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
      						shareIntent.setComponent(name);
      						startActivity(shareIntent);
      					}					
      				}				
      			}							
      		});
      
      		twitter_share = (ImageView) findViewById(R.id.twitter_share);
      		twitter_share.setOnClickListener(new OnClickListener() {
      
      			@Override
      			public void onClick(View v) {
      				// TODO Auto-generated method stub
      
      				Uri pngUri = Uri.parse("android.resource://"+getPackageName()+"/"+imageUrls[j]);
      				Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
      				shareIntent.setType("image/jpeg");
      				shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Eric Lafforgue pix from https://www.google.com");
      				shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,"Eric Lafforgue pix from https://www.google.com");
      				shareIntent.putExtra(android.content.Intent.EXTRA_STREAM,pngUri);
      				PackageManager pm = getApplicationContext().getPackageManager();
      				List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
      				for (final ResolveInfo app : activityList) {
      					if ((app.activityInfo.name).contains("twitter")) {
      						final ActivityInfo activity = app.activityInfo;
      						final ComponentName name = new ComponentName(
      								activity.applicationInfo.packageName,
      								activity.name);
      						shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
      						shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
      								| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
      						shareIntent.setComponent(name);
      						startActivity(shareIntent);
      					}
      				}
      			}							
      		});
      	}
      
      	@Override
      	public void onSaveInstanceState(Bundle outState) {
      		outState.putInt(STATE_POSITION, pager.getCurrentItem());
      	}
      
      	private class ImagePagerAdapter extends PagerAdapter {
      
      		private String[] images;
      		private LayoutInflater inflater;
      
      		ImagePagerAdapter(String[] images) {
      			this.images = images;
      			inflater = getLayoutInflater();
      		}
      
      		@Override
      		public void destroyItem(ViewGroup 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(ViewGroup view, int position) {
      			View imageLayout = inflater.inflate(R.layout.item_pager_image, view, false);
      			ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);
      			final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);
      
      			imageLoader.displayImage(images[position], imageView, options, new SimpleImageLoadingListener() {
      				@Override
      				public void onLoadingStarted(String imageUri, View view) {
      					spinner.setVisibility(View.VISIBLE);
      				}
      
      				@Override
      				public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
      					String message = null;
      					switch (failReason.getType()) {
      					case IO_ERROR:
      						message = "Input/Output error";
      						break;
      					case DECODING_ERROR:
      						message = "Image can't be decoded";
      						break;
      					case NETWORK_DENIED:
      						message = "Downloads are denied";
      						break;
      					case OUT_OF_MEMORY:
      						message = "Out Of Memory error";
      						break;
      					case UNKNOWN:
      						message = "Unknown error";
      						break;
      					}
      					Toast.makeText(ImagePagerActivityAngola.this, message, Toast.LENGTH_SHORT).show();
      
      					spinner.setVisibility(View.GONE);
      				}
      
      				@Override
      				public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
      					spinner.setVisibility(View.GONE);
      				}
      			});
      
      			((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) {
      		}
      	}
      }
      • Partager sur Facebook
      • Partager sur Twitter
        12 juin 2013 à 11:05:37

        Bonjour,

        Concernant Facebook, ne cherche pas, si tu passes par la méthode des Intent ça ne va pas marcher, la seule chose que tu peux partager sur facebook c'est un URL, apparemment c'est un truc de privacy, alors que sur IPhone ils le permettent :colere:de façon à t'obliger à utiliser leur Facebook API pour Android.

        Pour le reste je n'ai pas d'idée.

        • Partager sur Facebook
        • Partager sur Twitter
          12 juin 2013 à 11:33:25

          merci alikyo pour le reste j'avais utilisé
          emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://"+getPackageName()+"/"+imageUrls[j]));

          il me retourne ceci comme image

          du coup je sais pas trop comment afficher cette image vu qu'il me prend bien le nom je suppose alors qu'il connait l'image

          • Partager sur Facebook
          • Partager sur Twitter

          android share viewpager

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown