none
XAMARIN ANDROID: associare un tipo di file alla mia app RRS feed

  • Domanda

  • Sto provando ad usare degli intent-filter per associare ai file .mp4 la mia app.
    Ho trovato diversi esempi ma non mi funzionano.

    Cosa strana, se l'app è compilata come debug, l'associazione sembra esserci ma con file explorer lanciando il file MP4 viene fuori una schermata nera. Se l'app viene compilata come release, l'associazione non viene nemmeno fatta nel senso che la mia app nemmeno viene proposta per vedere file .mp4

    Questo è il file manifest che ho creato, sbaglio qualche cosa:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.road.play" android:installLocation="auto">
    <application android:label="Road">
    <activity name=".MainActivity">
    <intent-filter android:icon="@drawable/icon">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="file" />
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.mp4" />
    <data android:host="*" />
    </intent-filter>
    </activity>
    </application>


    • Modificato .NET CMS venerdì 23 dicembre 2016 01:15
    venerdì 23 dicembre 2016 01:13

Risposte

  • Ciao,

    hai provato a farlo da codice modificando la MainActivity.cs in qualcosa di simile?

    [Activity (Label = "MyApp", MainLauncher = true, Icon = "@drawable/icon")]
     [IntentFilter (new string[]{Intent.ActionView}, 
            Categories=new string[] { Intent.CategoryDefault, Intent.CategoryBrowsable },
            DataScheme="file",
            DataHost="*",
            DataMimeType="*/*",
            DataPathPattern=".*\\\\.mp4")]
     public class MainActivity : Activity
    {...}

    occhio ai 4 \\\\ che vanno inseriti tutti prima dell'estensione.

    Ciao

    Alessio

    • Contrassegnato come risposta .NET CMS sabato 24 dicembre 2016 19:31
    venerdì 23 dicembre 2016 17:46

Tutte le risposte

  • Ciao,

    hai provato a farlo da codice modificando la MainActivity.cs in qualcosa di simile?

    [Activity (Label = "MyApp", MainLauncher = true, Icon = "@drawable/icon")]
     [IntentFilter (new string[]{Intent.ActionView}, 
            Categories=new string[] { Intent.CategoryDefault, Intent.CategoryBrowsable },
            DataScheme="file",
            DataHost="*",
            DataMimeType="*/*",
            DataPathPattern=".*\\\\.mp4")]
     public class MainActivity : Activity
    {...}

    occhio ai 4 \\\\ che vanno inseriti tutti prima dell'estensione.

    Ciao

    Alessio

    • Contrassegnato come risposta .NET CMS sabato 24 dicembre 2016 19:31
    venerdì 23 dicembre 2016 17:46
  • Si così funziona, per me a scopo didattico interesserebbe capire come mai il codice che avevo messo nel file AndroidManifest non funziona.
    Al codice che mi hai scritto te ho solo fatto una piccola modifica perchè non mi trovava Intent:

        [IntentFilter(new string[] { Android.Content.Intent.ActionView },        Categories = new string[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable },        DataScheme = "file",        DataHost = "*",        DataMimeType = "*/*",        DataPathPattern = ".*\\\\.mp4")]

    sabato 24 dicembre 2016 17:04
  • Ciao,

    alcune cose come queste è consigliato farlo da codice, non so sinceramente cosa cambi ma ho paura che in fase di compilazione possano venir fatte alcune ottimizzazioni che possano dare dei problemi.

    Adesso se il tuo problema è stato risolto puoi impostare il mio post precedente come risposta in modo da chiudere il thread.

    Ciao!!

    Alessio

    sabato 24 dicembre 2016 17:49