Lista programmi per condivisione??

di il
17 risposte

Lista programmi per condivisione??

Ciao a tutti..

avete presente quando da un'app potete condividere qualcosa (foto,video ecc) e cliccate su condividi e si apre una lista di applicazioni che sono presenti sul dispositivo che poi vi permettono di accedere?

una cosa tipo:



avete idea di come si possa fare?

17 Risposte

  • Re: Lista programmi per condivisione??

    Ciao, quello che chiedi è già fornito dalle API della classe Intent. In particolare dopo aver creato un intent:
    
    Intent intent = new Intent( .... );
    String titolo = "Titolo della dialog";
    Intent scelta = Intent.createChooser(intent, titolo);
    
    startActivity(scelta);
    
  • Re: Lista programmi per condivisione??

    Grazie mille!
    nell'intent che creo devo inserire un file o una bitmap?
    p.s. è normale che sia lento e che alcune applicazioni come gmail se le seleziono si bloccano in modo anomalo?
  • Re: Lista programmi per condivisione??

    Il tuo scopo quale sarebbe? Cosa vuoi condividere?


    Sent from my iPhone using Tapatalk
  • Re: Lista programmi per condivisione??

    Un'immagine presente in una imageview
  • Re: Lista programmi per condivisione??

    Qua trovi esattamente ciò che cerchi


    Sent from my iPhone using Tapatalk
  • Re: Lista programmi per condivisione??

    Grazie per la dritta!

    purtroppo però quando mi si apre la lista,qualsiasi programma crasha prima di poter condividere la foto
  • Re: Lista programmi per condivisione??

    Il logcat che errori ti da?
  • Re: Lista programmi per condivisione??

    Allora..
    il codice per lanciare è:
    
    Intent shareintent = new Intent();
                	shareintent.setAction(Intent.ACTION_SEND);
                	shareintent.putExtra(Intent.EXTRA_STREAM, bitmap);
                	shareintent.setType("image/jpeg");
                	startActivity(Intent.createChooser(shareintent, getResources().getText(R.string.send_to)));
    
    se in putExtra metto bitmap mi dice FAILED BINDER TRANSACTION

    se metto invece il path della foto dice
    06-12 16:41:10.407: W/Bundle(29699): Key android.intent.extra.STREAM expected Parcelable but value was a java.lang.String. The default value <null> was returned.
    06-12 16:41:10.407: W/Bundle(29699): Attempt to cast generated internal exception:
    06-12 16:41:10.407: W/Bundle(29699): java.lang.ClassCastException: java.lang.String cannot be cast to android.os.Parcelable
    06-12 16:41:10.407: W/Bundle(29699): at android.os.Bundle.getParcelable(Bundle.java:1212)
    06-12 16:41:10.407: W/Bundle(29699): at android.content.Intent.getParcelableExtra(Intent.java:4652)
    06-12 16:41:10.407: W/Bundle(29699): at android.content.Intent.migrateExtraStreamToClipData(Intent.java:7235)
    06-12 16:41:10.407: W/Bundle(29699): at android.content.Intent.migrateExtraStreamToClipData(Intent.java:7219)
    06-12 16:41:10.407: W/Bundle(29699): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
    06-12 16:41:10.407: W/Bundle(29699): at android.app.Activity.startActivityForResult(Activity.java:3424)
    06-12 16:41:10.407: W/Bundle(29699): at android.app.Activity.startActivityForResult(Activity.java:3385)
    06-12 16:41:10.407: W/Bundle(29699): at android.app.Activity.startActivity(Activity.java:3627)
    06-12 16:41:10.407: W/Bundle(29699): at android.app.Activity.startActivity(Activity.java:3595)
    06-12 16:41:10.407: W/Bundle(29699): at com.example.v2.Finals$DrawerItemClickListener.selectItem(Finals.java:127)
    06-12 16:41:10.407: W/Bundle(29699): at com.example.v2.Finals$DrawerItemClickListener.onItemClick(Finals.java:116)
    06-12 16:41:10.407: W/Bundle(29699): at android.widget.AdapterView.performItemClick(AdapterView.java:299)
    06-12 16:41:10.407: W/Bundle(29699): at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
    06-12 16:41:10.407: W/Bundle(29699): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2911)
    06-12 16:41:10.407: W/Bundle(29699): at android.widget.AbsListView$3.run(AbsListView.java:3645)
    06-12 16:41:10.407: W/Bundle(29699): at android.os.Handler.handleCallback(Handler.java:733)
    06-12 16:41:10.407: W/Bundle(29699): at android.os.Handler.dispatchMessage(Handler.java:95)
    06-12 16:41:10.407: W/Bundle(29699): at android.os.Looper.loop(Looper.java:136)
    06-12 16:41:10.407: W/Bundle(29699): at android.app.ActivityThread.main(ActivityThread.java:5001)
    06-12 16:41:10.407: W/Bundle(29699): at java.lang.reflect.Method.invokeNative(Native Method)
    06-12 16:41:10.407: W/Bundle(29699): at java.lang.reflect.Method.invoke(Method.java:515)
    06-12 16:41:10.407: W/Bundle(29699): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
    06-12 16:41:10.407: W/Bundle(29699): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    06-12 16:41:10.407: W/Bundle(29699): at dalvik.system.NativeStart.main(Native Method)
  • Re: Lista programmi per condivisione??

    Bitmap cosa sarebbe? L'EXTRA_STREAM deve essere l'Uri dell'immagine!
  • Re: Lista programmi per condivisione??

    Ho provato a passargli l'uri come stringa e..

    06-12 17:18:25.297: E/AndroidRuntime(32307): FATAL EXCEPTION: main
    06-12 17:18:25.297: E/AndroidRuntime(32307): Process: com.google.android.gm, PID: 32307
    06-12 17:18:25.297: E/AndroidRuntime(32307): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.android.gm/com.google.android.gm.ComposeActivityGmail}: java.lang.NullPointerException
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.app.ActivityThread.access$800(ActivityThread.java:135)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.os.Handler.dispatchMessage(Handler.java:102)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.os.Looper.loop(Looper.java:136)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.app.ActivityThread.main(ActivityThread.java:5001)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at java.lang.reflect.Method.invokeNative(Native Method)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at java.lang.reflect.Method.invoke(Method.java:515)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at dalvik.system.NativeStart.main(Native Method)
    06-12 17:18:25.297: E/AndroidRuntime(32307): Caused by: java.lang.NullPointerException
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.content.ContentResolver.acquireExistingProvider(ContentResolver.java:1392)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.content.ContentResolver.getType(ContentResolver.java:304)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at com.android.mail.compose.AttachmentsView.o(SourceFile:220)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at com.android.mail.compose.v.a(SourceFile:739)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at com.android.mail.compose.v.Fw(SourceFile:608)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at com.android.mail.compose.v.onCreate(SourceFile:448)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at com.google.android.gm.ComposeActivityGmail.onCreate(SourceFile:54)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.app.Activity.performCreate(Activity.java:5231)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    06-12 17:18:25.297: E/AndroidRuntime(32307): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
    06-12 17:18:25.297: E/AndroidRuntime(32307): ... 11 more
  • Re: Lista programmi per condivisione??

    No, devi proprio passare l'Uri come oggetto Uri:
    
    Uri uri = Uri.fromFile(fileFoto);
    shareintent.putExtra(Intent.EXTRA_STREAM, uri);
    
  • Re: Lista programmi per condivisione??

    Grande!!
    Però ho un problema..
    Come faccio a passare l'uri tra 2 activity?
    A me serve nella seconda
  • Re: Lista programmi per condivisione??

    Dal corpo di una activity puoi ottenere l'intent "chiamante" attraverso il metodo , dal quale potrai recuperare l'Uri.

    Però non capisco una cosa: per quale motivo usi un chooser se sai già che gestirai la foto con 1 activity ben definita? Non puoi usare direttamente un intent esplicito? Fra l'altro il chooser ti permette di scegliere quale applicazione esterna (alla tua) deve gestire un determinato intent, non funziona fra activity..
  • Re: Lista programmi per condivisione??

    No mi spiego meglio..
    la prima activity fa la foto e la seconda la modifica e poi la condivide con altre app.

    per passare la foto faccio

    Intent intent = new Intent(getBaseContext(), Seconda_activity.class);
    intent.putExtra("image", OutputFile.getAbsolutePath());
    startActivity(intent);

    e la seconda activity riceve cosi

    image_path = getIntent().getStringExtra("image");
    bitmap = BitmapFactory.decodeFile(image_path);

    se volessi passare anche l'uri in modo da poter fare la condivisione esiste un metodo che sostituisce il getStringExtra?
Devi accedere o registrarti per scrivere nel forum
17 risposte