---
# System prepended metadata

title: Solution BUG images
tags: [Device Programming]

---

# Solution BUG images

Het kan zijn dat je in Xamarin.Forms / Visual Studio geen afbeeldingen kan inladen. Bij verschillende studenten werkten verschillende oplossingen; we sommen ze hieronder graag voor je op. Probeer ze één voor één in volgorde uit. **Moest je alsnog problemen ondervinden, neem dan contact op met je docenten.**

:::info
Als de url van de image begint met '**http**' (en dus niet met 'https') moet je een APPLICATION setting toevoegen aan het AndroidManifest.xml bestand, nl `android:usesCleartextTraffic="true"`
*Dit bestand is een configuratiebestand dat in alle Android apps aanwezig moet zijn. Je definieert er niet alleen een unieke naam voor de Play Store, maar ook de toegangspermissies die jouw code nodig heeft om bepaalde dingen te doen. Dergelijke permissies zijn: toegang tot de netwerk status, GPS locatie, batterij status, de camera, enzovoort.*

![](https://hackmd.io/_uploads/HkDD-zizj.png)

![](https://hackmd.io/_uploads/S1nf7fjGj.png)
:::




### Oplossing 1: Plaats afbeelding in Assets folder

-   **Momenteel** stel je in XAML de url in als source
    ```cs=
    <Image x:Name="imgMen" Grid.Row="4" Grid.Column="0" Margin="4" Source="http://www.free-icons-download.net/images/male-symbol-46038.png" />
    ```
    
-   **Om het probleem op te lossen** plaatsen we de afbeelding in de assets folder (vergeet niet Embedded Resource aan te klikken!)  en tonen we ze via code:
    ```cs=
    imgMen.Source = ImageSource.FromResource("Ex02.Assets.male.png");
    ```

### Oplossing 2: Expliciet stream ophalen

-   **Momenteel** stel je gewoon rechtstreeks de url in als image source. Xamarin doet automatisch een vertaling van een string naar een "uri source":
    
    ```cs=
    imgMen.Source = "http://www.free-icons-download.net/images/male-symbol-46038.png";
    ```
    
-   **Om het probleem op te lossen** proberen we de stream rechtstreeks async op te halen:

    ```cs=
    imgMen.Source = ImageSource.FromStream(() => new HttpClient().GetStreamAsync("http://www.free-icons-download.net/images/male-symbol-46038.png").Result); 
    ```


### Oplossing 3: Cache af zetten

-   **Momenteel** stel je gewoon rechtstreeks de url in als image source. Xamarin doet automatisch een vertaling van een string naar een "uri source":
    
     ```cs=
    imgMen.Source = "http://www.free-icons-download.net/images/male-symbol-46038.png";
     ```
    
-   **Om het probleem op te lossen zullen** we er expliciet een uri source van moeten maken, zodat we de property **CachingEnabled** af kunnen zetten:
    
     ```cs=
    imgMen.Source = new UriImageSource() 
    { 
     Uri = new Uri( "http://www.free-icons-download.net/images/male-symbol-46038.png"), 
     CachingEnabled = false 
    };
     ```
