Parquelle
Parquelle

Reputation: 1

C# - UWP AppInfo throws NotImplementedException

I'm developing a C# WinForms app, using the UWP API. I'm attempting to read notifications programatically, and I have succeeded so far. However, whenever I call AppInfo from the UserNotification class, I get a NotImplementedException, no matter what property I read from AppInfo.

Does anyone have any suggestions?

I have only been able to find 1 answer to this question and it's not very useful, and also a few years old. This is a major roadblock in my project, any help is massively appreciated!

Thank you in advance.

EDIT

Here's my code.

        try {
            this.source = notification.AppInfo.DisplayInfo.DisplayName;
        } catch(NotImplementedException e) {
            this.source = "Unspecified";
        }

        NotificationBinding binding = notification.Notification.Visual.GetBinding(KnownNotificationBindings.ToastGeneric);
        if (binding != null) {
            Console.WriteLine(binding.GetTextElements()[1]);
            this.title = binding.GetTextElements().FirstOrDefault()?.Text;
            this.body = string.Join("\n", binding.GetTextElements().Skip(1).Select(t => t.Text));
        }
        Init();

I'm using the code from the examples in the docs.

Upvotes: 0

Views: 242

Answers (2)

Snapperhead
Snapperhead

Reputation: 19

 private async Task<AppDisplayInfo> GetDisplayInfo()
    {
        var list = await AppDiagnosticInfo.RequestInfoAsync();
        
        var currentPackage = list.FirstOrDefault(o => o.AppInfo.PackageFamilyName == Package.Current.Id.FamilyName);
        if (currentPackage != null)
        {
            var currentAppInfo = currentPackage.AppInfo;
            var display = currentAppInfo.DisplayInfo;

            return display;
        }

        return null;
    }

Upvotes: 0

Roy Li - MSFT
Roy Li - MSFT

Reputation: 8681

UWP AppInfo throws NotImplementedException

Based on the exception message, it looks like notification.AppInfo.DisplayInfo has not been implemented for WinForm platform. For this scenario, we have a workaround for getting AppInfo with [AppDiagnosticInfo][1] api. Please refer the following code

var list = await AppDiagnosticInfo.RequestInfoAsync();
var currentPackage = list.Where(o => o.AppInfo.PackageFamilyName == Package.Current.Id.FamilyName).FirstOrDefault();
if (currentPackage != null)
{
    AppInfo currentAppInfo = currentPackage.AppInfo;
    var display = currentAppInfo.DisplayInfo;
}

Upvotes: 1

Related Questions