Example #1
0
 private void PayViaGooglePay()
 {
     if (IsGooglePayInstalled())
     {
         string transId = $"UPI{Guid.NewGuid().ToString().Substring(0, 8)}";
         using (var uri = new Android.Net.Uri.Builder()
                          .Scheme("upi")
                          .Authority("pay")
                          .AppendQueryParameter("pa", "yourgooglepayudername@test")
                          .AppendQueryParameter("pn", "Test Name")
                          .AppendQueryParameter("pn", "Seding Amount of RS 1")
                          .AppendQueryParameter("mc", "0000")
                          .AppendQueryParameter("tr", transId)
                          .AppendQueryParameter("tn", "Pay to Test Name")
                          .AppendQueryParameter("am", "1")
                          .AppendQueryParameter("cu", "INR")
                          .Build())
         {
             Intent = new Intent(Intent.ActionView);
             Intent.SetData(uri);
             Intent.SetPackage("com.google.android.apps.nbu.paisa.user");
             StartActivityForResult(Intent, gpay_requestCode);
         }
     }
 }
		public async static Task<bool> ReadStepCountStatus(GoogleApiClient googleApiClient)
		{
			var nodeApiLocalNode = await WearableClass.NodeApi.GetLocalNodeAsync(googleApiClient);
			if (nodeApiLocalNode == null || !nodeApiLocalNode.Status.IsSuccess || nodeApiLocalNode.Node == null)
			{
				// error
			}
			else {
				var localNode = nodeApiLocalNode.Node.Id;
				var uri = new Android.Net.Uri.Builder()
							.Scheme("wear")
							.Path(PathWithFeature)
							.Authority(localNode)
							.Build();
				var dataItemResult = await WearableClass.DataApi.GetDataItemAsync(googleApiClient, uri) as IDataApiDataItemResult;
				if (dataItemResult == null || !dataItemResult.Status.IsSuccess || dataItemResult.DataItem == null)
				{
					// not found
				}
				else {
					var dataMapItem = DataMapItem.FromDataItem(dataItemResult.DataItem);
					var stepCountOn = dataMapItem.DataMap.GetBoolean("stepcount");
					return stepCountOn;
				}
			}
			return true; // default is "ON"
		}
Example #3
0
            public override string GetString(int column)
            {
                switch (column)
                {
                case 0:                         // _ID
                    return(MPos.ToString(CultureInfo.InvariantCulture));

                case 1:                         // SuggestColumnText1
                    return(CurrentEntry.Strings.ReadSafe(PwDefs.TitleField));

                case 2:                         // SuggestColumnText2
                    KeyValuePair <string, string> context;
                    if (mResultContexts.TryGetValue(CurrentEntry.Uuid, out context))
                    {
                        return(Internationalise(context));
                    }
                    return(null);

                case 3:                         // SuggestColumnIcon1
                    var builder = new Android.Net.Uri.Builder();
                    builder.Scheme(ContentResolver.SchemeContent);
                    builder.Authority(Authority);
                    builder.Path(GetIconPathQuery);
                    builder.AppendQueryParameter(IconIdParameter, CurrentEntry.IconId.ToString());
                    builder.AppendQueryParameter(CustomIconUuidParameter, CurrentEntry.CustomIconUuid.ToHexString());
                    return(builder.Build().ToString());

                case 4:                         // SuggestColumnIntentDataId
                    return(CurrentEntry.Uuid.ToHexString());

                default:
                    return(null);
                }
            }
Example #4
0
            public override string GetString(int column)
            {
                switch (column)
                {
                case 0:                         // _ID
                    return(MPos.ToString(CultureInfo.InvariantCulture));

                case 1:                         // SuggestColumnText1
                    return(CurrentEntry.Strings.ReadSafe(PwDefs.TitleField));

                case 2:                         // SuggestColumnText2
                    if (MPos < _entriesWithContexts.Count)
                    {
                        return(Internationalise(_entriesWithContexts[MPos].resultContext));
                    }
                    return("");

                case 3:                         // SuggestColumnIcon1
                    var builder = new Android.Net.Uri.Builder();
                    builder.Scheme(ContentResolver.SchemeContent);
                    builder.Authority(Authority);
                    builder.Path(GetIconPathQuery);
                    builder.AppendQueryParameter(IconIdParameter, CurrentEntry.IconId.ToString());
                    builder.AppendQueryParameter(CustomIconUuidParameter, CurrentEntry.CustomIconUuid.ToHexString());
                    builder.AppendQueryParameter(DatabaseIndexParameter, _entriesWithContexts[MPos].DatabaseIndex.ToString());
                    return(builder.Build().ToString());

                case 4:                         // SuggestColumnIntentDataId
                    return(new ElementAndDatabaseId(App.Kp2a.FindDatabaseForElement(CurrentEntry), CurrentEntry).FullId);

                default:
                    return(null);
                }
            }
        void CreateGiftList()
        {
            for (int i = 0; i < YuklenecekMediaCountHelper.Countt; i++)
            {
                SablonDTO1.Add(new SablonDTO());
            }

            var DahaOnceEklenenVarmi = DataBase.YUKLENECEK_SABLON_GETIR();

            for (int i = 0; i < DahaOnceEklenenVarmi.Count; i++)
            {
                Android.Net.Uri.Builder Builderr = new Android.Net.Uri.Builder();
                Android.Net.Uri         newUri;
                //if (DahaOnceEklenenVarmi[i].isVideo)
                //{
                //    newUri = Builderr.Scheme("content").Path(DahaOnceEklenenVarmi[i].MediaUri).Authority("media").EncodedAuthority("media").Build();
                //}
                //else
                //{
                //    newUri = Builderr.Scheme("content").Path(DahaOnceEklenenVarmi[i].MediaUri).Authority("com.android.providers.media.documents").EncodedAuthority("com.android.providers.media.documents").Build();
                //}
                newUri = Android.Net.Uri.Parse(DahaOnceEklenenVarmi[i].MediaUri);
                SablonDTO1[DahaOnceEklenenVarmi[i].position].MediaUri = newUri;
                SablonDTO1[DahaOnceEklenenVarmi[i].position].isVideo  = DahaOnceEklenenVarmi[i].isVideo;
            }
        }
Example #6
0
        private void ShowNotification()
        {
            var audiobuilder = new Android.Net.Uri.Builder();
            var audio        = Android.Net.Uri.Parse(_actualSoundString);
            var resultIntent = new Intent(this, typeof(MainActivity));

            resultIntent.AddFlags(ActivityFlags.ReorderToFront);
            var pendingIntent  = PendingIntent.GetActivity(this, 0, resultIntent, PendingIntentFlags.UpdateCurrent);
            var notificationId = Resource.String.monkey_notification;

            var builder = new NotificationCompat.Builder(this)
                          .SetSmallIcon(Resource.Drawable.Xamarin_Icon)
                          .SetContentTitle(this.GetText(Resource.String.app_label))
                          .SetContentText(this.GetText(Resource.String.monkey_notification))
                          .SetContentIntent(pendingIntent)
                          .SetAutoCancel(true)
                          .SetSound(audio);


            var notification = builder.Build();



            var notificationManager = (NotificationManager)GetSystemService(NotificationService);

            notificationManager.Notify(notificationId, notification);
        }
Example #7
0
        protected Intent GenerateOpenWithIntent(string path)
        {
            var uid = Auth.Uid;

            // fake the URI
            // WARNING: URI FORMAT IS NOT FINALIZED AND MAY CHANGE AT ANY TIME
            Android.Net.Uri.Builder builder = new Android.Net.Uri.Builder();
            builder.Scheme("content");
            builder.Authority("com.dropbox.android.FileCache");
            builder.AppendPath("filecache");
            builder.AppendPath(uid);

            foreach (var component in path.Substring(1).Split('/'))
            {
                builder.AppendPath(component);
            }

            var uri = builder.Build();
            // end URI fakery

            Intent owpIntent = new Intent(DbxOfficialAppConnector.ActionDbxcEdit, uri);

            // extras
            owpIntent.PutExtra(DbxOfficialAppConnector.ExtraDropboxPath, path);
            owpIntent.PutExtra(DbxOfficialAppConnector.ExtraDropboxUid, uid);
            owpIntent.PutExtra(DbxOfficialAppConnector.ExtraDropboxReadOnly, false);
            owpIntent.PutExtra(DbxOfficialAppConnector.ExtraDropboxSessionId, "generated");
            owpIntent.SetDataAndType(uri, "text/plain");

            return(owpIntent);
        }
Example #8
0
        public async static Task <bool> ReadStepCountStatus(GoogleApiClient googleApiClient)
        {
            var nodeApiLocalNode = await WearableClass.NodeApi.GetLocalNodeAsync(googleApiClient);

            if (nodeApiLocalNode == null || !nodeApiLocalNode.Status.IsSuccess || nodeApiLocalNode.Node == null)
            {
                // error
            }
            else
            {
                var localNode = nodeApiLocalNode.Node.Id;
                var uri       = new Android.Net.Uri.Builder()
                                .Scheme("wear")
                                .Path(PathWithFeature)
                                .Authority(localNode)
                                .Build();
                var dataItemResult = await WearableClass.DataApi.GetDataItemAsync(googleApiClient, uri) as IDataApiDataItemResult;

                if (dataItemResult == null || !dataItemResult.Status.IsSuccess || dataItemResult.DataItem == null)
                {
                    // not found
                }
                else
                {
                    var dataMapItem = DataMapItem.FromDataItem(dataItemResult.DataItem);
                    var stepCountOn = dataMapItem.DataMap.GetBoolean("stepcount");
                    return(stepCountOn);
                }
            }
            return(true);            // default is "ON"
        }
Example #9
0
        /// <summary>
        /// Loads the media to either iView or vView, depending on filetype (that is, extension).
        /// </summary>
        /// <param name='filetype'>
        /// Filetype. A string that is made up of those characters that follow the dot (eg. frog.JPG)
        /// </param>
        /// <param name='path'>
        /// Path. A string. The absolute path to the file.
        /// </param>
        private void LoadMedia(string path)
        {
            Android.Net.Uri.Builder builder = new Android.Net.Uri.Builder();
            builder.Path(path);
            LoadMedia(builder.Build());               //use the uri

//			string[] nameParts = path.Split (".".ToCharArray ());
//			string filetype = nameParts [nameParts.Length - 1];
//			aCrossHairView.locationArr.Clear ();
//			aCrossHairView.Invalidate ();
//			//resultTextView.SetText (Resource.String.resultTextView_title);
//			scaleButton.Enabled = true;
//			computeButton.Enabled = false;
//			switch (filetype) {
//			case "3gp":
//				vView.SetVideoPath (path);
//				mediaPath = path;
//
//				iView.Visibility = ViewStates.Invisible;
//				vView.Visibility = ViewStates.Visible;
//				playButton.Enabled = true;
//				break;
//			case "jpg":
//				Console.WriteLine (path);
//				Android.Net.Uri.Builder builder = new Android.Net.Uri.Builder ();
//				builder.Path (path);
//				iView.SetImageURI (builder.Build ());
//				mediaPath = path;
//
//				iView.Visibility = ViewStates.Visible;
//				vView.Visibility = ViewStates.Invisible;
//				playButton.Enabled = false;
//				break;
//			}
        }
Example #10
0
        private static bool IsWhitelistedFromProvider(Context context, String identifier, String whatsappPackageName)
        {
            PackageManager packageManager = context.PackageManager;

            if (IsPackageInstalled(whatsappPackageName, packageManager))
            {
                String       whatsappProviderAuthority = whatsappPackageName + CONTENT_PROVIDER;
                ProviderInfo providerInfo = packageManager.ResolveContentProvider(whatsappProviderAuthority, PackageInfoFlags.MetaData);
                // provider is not there. The WhatsApp app may be an old version.
                if (providerInfo == null)
                {
                    return(false);
                }
                Android.Net.Uri queryUri = new Android.Net.Uri.Builder()
                                           .Scheme(ContentResolver.SchemeContent)
                                           .Authority(whatsappProviderAuthority)
                                           .AppendPath(QUERY_PATH)
                                           .AppendQueryParameter(AUTHORITY_QUERY_PARAM, STICKER_APP_AUTHORITY)
                                           .AppendQueryParameter(IDENTIFIER_QUERY_PARAM, identifier)
                                           .Build();

                var cursor = context.ContentResolver.Query(queryUri, null, null, null, null);
                if (cursor != null && cursor.MoveToFirst())
                {
                    int whiteListResult = cursor.GetInt(cursor.GetColumnIndexOrThrow(QUERY_RESULT_COLUMN_NAME));
                    return(whiteListResult == 1);
                }
            }

            return(false);
        }
		public void OnConnected (Android.OS.Bundle connectionHint)
		{
			var dataItemUri = new Android.Net.Uri.Builder ().Scheme (PutDataRequest.WearUriScheme).Path (Constants.BothPath).Build ();
			if (Log.IsLoggable(Tag, LogPriority.Debug)) {
				Log.Debug(Tag, "Deleting Uri: " + dataItemUri.ToString());
			}
			WearableClass.DataApi.DeleteDataItems (googleApiClient, dataItemUri).SetResultCallback (this);
		}
Example #12
0
        private void RemoveCalendar(long calID)
        {
            Android.Net.Uri.Builder builder1 = CalendarContract.Calendars.ContentUri.BuildUpon();
            builder1.AppendQueryParameter(CalendarContract.Calendars.InterfaceConsts.CalendarDisplayName, Constants.DEVICE_CALENDAR_TITLE);

            String[] selArgs = new String[] { Constants.DEVICE_CALENDAR_TITLE };
            int      deleted = ContentResolver.Delete(CalendarContract.Calendars.ContentUri, CalendarContract.Calendars.InterfaceConsts.CalendarDisplayName + " =? ", selArgs);
        }
            public override string GetString(int column)
            {
                try
                {
                    if ((Position >= _entriesWithContexts.Count) || (Position < 0))
                    {
                        return("");
                    }

                    switch (column)
                    {
                    case 0:     // _ID
                        return(Position.ToString(CultureInfo.InvariantCulture));

                    case 1:     // SuggestColumnText1
                        string username = CurrentEntry.Strings.ReadSafe(PwDefs.UserNameField);
                        return(CurrentEntry.Strings.ReadSafe(PwDefs.TitleField) + (string.IsNullOrWhiteSpace(username) ? "" : " (" + username + ")"));

                    case 2:     // SuggestColumnText2
                        return(Internationalise(_entriesWithContexts[Position].resultContext));

                    case 3:     // SuggestColumnIcon1
                        var builder = new Android.Net.Uri.Builder();
                        builder.Scheme(ContentResolver.SchemeContent);
                        builder.Authority(Authority);
                        builder.Path(GetIconPathQuery);
                        if (CurrentEntry.Expires && CurrentEntry.ExpiryTime < DateTime.Now)
                        {
                            builder.AppendQueryParameter(IconIdParameter, PwIcon.Expired.ToString());
                            builder.AppendQueryParameter(CustomIconUuidParameter, PwUuid.Zero.ToHexString());
                            builder.AppendQueryParameter(DatabaseIndexParameter, _entriesWithContexts[Position].DatabaseIndex.ToString());
                        }
                        else
                        {
                            builder.AppendQueryParameter(IconIdParameter, CurrentEntry.IconId.ToString());
                            builder.AppendQueryParameter(CustomIconUuidParameter,
                                                         CurrentEntry.CustomIconUuid.ToHexString());
                            builder.AppendQueryParameter(DatabaseIndexParameter,
                                                         _entriesWithContexts[Position].DatabaseIndex.ToString());
                        }

                        return(builder.Build().ToString());

                    case 4:     // SuggestColumnIntentDataId
                        return(new ElementAndDatabaseId(App.Kp2a.FindDatabaseForElement(CurrentEntry), CurrentEntry).FullId);

                    default:
                        return(null);
                    }
                }
                catch (Exception e)
                {
                    Kp2aLog.LogUnexpectedError(e);
                    return("(error retrieving data)");
                }
            }
Example #14
0
        public void OnConnected(Android.OS.Bundle p0)
        {
            var dataItemUri = new Android.Net.Uri.Builder().Scheme(PutDataRequest.WearUriScheme).Path(Constants.BothPath).Build();

            if (Log.IsLoggable(Tag, LogPriority.Debug))
            {
                Log.Debug(Tag, "Deleting Uri: " + dataItemUri.ToString());
            }
            WearableClass.DataApi.DeleteDataItems(googleApiClient, dataItemUri).SetResultCallback(this);
        }
        public static Android.Net.Uri BuildPicassoUri(FileMetadata file)
        {
            var nativeUri = new Android.Net.Uri
                            .Builder()
                            .Scheme(SCHEME)
                            .Authority(HOST)
                            .Path(file.PathLower)
                            .Build();

            return(nativeUri);
        }
Example #16
0
        private static List <Event> QueryEvents(Context context, long beginTime, long endTime)
        {
            ContentResolver contentResolver = context.ContentResolver;

            Android.Net.Uri.Builder builder = CalendarContract.Instances.ContentUri.BuildUpon();
            ContentUris.AppendId(builder, beginTime);
            ContentUris.AppendId(builder, endTime);
            ICursor cursor = contentResolver.Query(builder.Build(), INSTANCE_PROJECTION,
                                                   null /* selection */, null /* selectionArgs */, null /* sortOrder */);

            try
            {
                int idIdx         = cursor.GetColumnIndex(CalendarContract.Instances.InterfaceConsts.Id);
                int eventIdIdx    = cursor.GetColumnIndex(CalendarContract.Instances.EventId);
                int titleIdx      = cursor.GetColumnIndex(CalendarContract.Instances.InterfaceConsts.Title);
                int beginIdx      = cursor.GetColumnIndex(CalendarContract.Instances.Begin);
                int endIdx        = cursor.GetColumnIndex(CalendarContract.Instances.End);
                int allDayIdx     = cursor.GetColumnIndex(CalendarContract.Instances.InterfaceConsts.AllDay);
                int descIdx       = cursor.GetColumnIndex(CalendarContract.Instances.InterfaceConsts.Description);
                int ownerEmailIdx = cursor.GetColumnIndex(CalendarContract.Instances.InterfaceConsts.Organizer);

                List <Event> events = new List <Event>(cursor.Count);
                while (cursor.MoveToNext())
                {
                    Event cEvent = new Event();
                    cEvent.Id          = cursor.GetLong(idIdx);
                    cEvent.EventId     = cursor.GetLong(eventIdIdx);
                    cEvent.Title       = cursor.GetString(titleIdx);
                    cEvent.Begin       = cursor.GetLong(beginIdx);
                    cEvent.End         = cursor.GetLong(endIdx);
                    cEvent.AllDay      = cursor.GetInt(allDayIdx) != 0;
                    cEvent.Description = cursor.GetString(descIdx);
                    string  ownerEmail    = cursor.GetString(ownerEmailIdx);
                    ICursor contactCursor = contentResolver.Query(ContactsContract.Data.ContentUri, CONTACT_PROJECTION,
                                                                  CONTACT_SELECTION, new String[] { ownerEmail }, null);
                    int  ownerIdIdx = contactCursor.GetColumnIndex(ContactsContract.Data.InterfaceConsts.ContactId);
                    long ownerId    = -1;
                    if (contactCursor.MoveToFirst())
                    {
                        ownerId = contactCursor.GetLong(ownerIdIdx);
                    }
                    contactCursor.Close();
                    // Use event organizer's profile picture as the notification background
                    cEvent.OwnerProfilePic = GetProfilePicture(contentResolver, context, ownerId);
                    events.Add(cEvent);
                }
                return(events);
            }
            finally {
                cursor.Close();
            }
            return(null);
        }
 public static void FetchConfigDataMap(IGoogleApiClient googleApiClient, DataItemResultCallback fetchConfigDataMapCallback)
 {
     WearableClass.NodeApi.GetLocalNode(googleApiClient).SetResultCallback(
         new ResultCallback(localNodeResult => {
         var localNode = localNodeResult.Node.Id;
         var uri       = new Android.Net.Uri.Builder()
                         .Scheme("wear")
                         .Path(DigitalWatchFaceUtil.PathWithFeature)
                         .Authority(localNode)
                         .Build();
         WearableClass.DataApi.GetDataItem(googleApiClient, uri)
         .SetResultCallback(fetchConfigDataMapCallback);
     }
                            )
         );
 }
        public void OnConnected(Bundle connectionHint)
        {
            if (Log.IsLoggable (Tag, LogPriority.Debug)) {
                Log.Debug (Tag, "OnConnected: " + connectionHint);
            }

            if (peerId != null) {
                var uri = new Android.Net.Uri.Builder ()
                    .Scheme ("wear")
                    .Path (PathWithFeature)
                    .Authority (peerId)
                    .Build ();
                WearableClass.DataApi.GetDataItem (googleApiClient, uri).SetResultCallback (this);
            } else {
                DisplayNoConnectedDeviceDialog ();
            }
        }
Example #19
0
        public Android.Net.Uri SaveFile(string fileName, IEnumerable <string> reddit)
        {
            if (string.IsNullOrEmpty(fileName))
            {
                throw new ArgumentException($"Parameter '{nameof(fileName)}' cannot be null or empty.");
            }

            if (reddit?.Any() != true)
            {
                throw new ArgumentException($"Parameter '{nameof(reddit)}' cannot be null or empty array.");
            }

            Android.Net.Uri result = null;

            try
            {
                var    folder = GetExternalFilesDir(Android.OS.Environment.DirectoryDownloads);
                string path   = System.IO.Path.Combine(folder.AbsolutePath, fileName);

                if (!File.Exists(path))
                {
                    using (var writer = new StreamWriter(path, append: false, Encoding.UTF8))
                    {
                        foreach (var line in reddit)
                        {
                            writer.WriteLine(line);
                        }
                    }
                }

                result = new Android.Net.Uri.Builder()
                         .Scheme("file")
                         .AppendEncodedPath(path)
                         .Build();
            }
            catch (IOException)
            {
                // TODO: Error handling
            }
            return(result);
        }
Example #20
0
        public void OnConnected(Bundle connectionHint)
        {
            if (Log.IsLoggable(Tag, LogPriority.Debug))
            {
                Log.Debug(Tag, "OnConnected: " + connectionHint);
            }

            if (peerId != null)
            {
                var uri = new Android.Net.Uri.Builder()
                          .Scheme("wear")
                          .Path(PathWithFeature)
                          .Authority(peerId)
                          .Build();
                WearableClass.DataApi.GetDataItem(googleApiClient, uri).SetResultCallback(this);
            }
            else
            {
                DisplayNoConnectedDeviceDialog();
            }
        }
        protected async Task RequestConsentInfoUpdate(String[] publisherIds, String url,
                                                      Action <ConsentStatus> OnConsentInfoUpdated,
                                                      Action <String> OnFailedToUpdateConsentInfo)
        {
            if (IsTestDevice())
            {
                Log.Info(TAG, "This request is sent from a test device.");
            }
            else
            {
                Log.Info(TAG, "Use ConsentInformation.getInstance(context).addTestDevice(\""
                         + HashedDeviceId
                         + "\") to get test ads on this device.");
            }

            String publisherIdsString = String.Join(',', publisherIds);


            ConsentData consentData = LoadConsentData();

            Android.Net.Uri.Builder uriBuilder =
                Android.Net.Uri.Parse(url)
                .BuildUpon()
                .AppendQueryParameter("pubs", publisherIdsString)
                .AppendQueryParameter("es", "2")
                .AppendQueryParameter("plat", consentData.SdkPlatformString)
                .AppendQueryParameter("v", consentData.SdkVersionString);
            if (IsTestDevice() && DebugGeography != DebugGeography.DEBUG_GEOGRAPHY_DISABLED)
            {
                uriBuilder =
                    uriBuilder.AppendQueryParameter(
                        "debug_geo",
                        ((int)DebugGeography).ToString());
            }
            await MakeConsentLookupRequest(uriBuilder.Build().ToString(), publisherIds,
                                           OnConsentInfoUpdated, OnFailedToUpdateConsentInfo);
        }
Example #22
0
        public virtual void OnReceived(IDictionary <string, object> parameters)
        {
            System.Diagnostics.Debug.WriteLine($"{DomainTag} - OnReceived");

            if ((parameters.TryGetValue(SilentKey, out var silent) && (silent.ToString() == "true" || silent.ToString() == "1")) || (IsInForeground() && (!(!parameters.ContainsKey(ChannelIdKey) && parameters.TryGetValue(PriorityKey, out var imp) && ($"{imp}" == "high" || $"{imp}" == "max")) || (!parameters.ContainsKey(PriorityKey) && !parameters.ContainsKey(ChannelIdKey) && PushNotificationManager.DefaultNotificationChannelImportance != NotificationImportance.High && PushNotificationManager.DefaultNotificationChannelImportance != NotificationImportance.Max))))
            {
                return;
            }

            Context context = Application.Context;

            var notifyId           = 0;
            var title              = context.ApplicationInfo.LoadLabel(context.PackageManager);
            var message            = string.Empty;
            var tag                = string.Empty;
            var notificationNumber = 0;
            var showWhenVisible    = PushNotificationManager.ShouldShowWhen;
            var soundUri           = PushNotificationManager.SoundUri;
            var largeIconResource  = PushNotificationManager.LargeIconResource;
            var smallIconResource  = PushNotificationManager.IconResource;
            var notificationColor  = PushNotificationManager.Color;
            var chanId             = PushNotificationManager.DefaultNotificationChannelId;

            if (!string.IsNullOrEmpty(PushNotificationManager.NotificationContentTextKey) && parameters.TryGetValue(PushNotificationManager.NotificationContentTextKey, out var notificationContentText))
            {
                message = notificationContentText.ToString();
            }
            else if (parameters.TryGetValue(AlertKey, out var alert))
            {
                message = $"{alert}";
            }
            else if (parameters.TryGetValue(BodyKey, out var body))
            {
                message = $"{body}";
            }
            else if (parameters.TryGetValue(MessageKey, out var messageContent))
            {
                message = $"{messageContent}";
            }
            else if (parameters.TryGetValue(SubtitleKey, out var subtitle))
            {
                message = $"{subtitle}";
            }
            else if (parameters.TryGetValue(TextKey, out var text))
            {
                message = $"{text}";
            }

            if (!string.IsNullOrEmpty(PushNotificationManager.NotificationContentTitleKey) && parameters.TryGetValue(PushNotificationManager.NotificationContentTitleKey, out var notificationContentTitle))
            {
                title = notificationContentTitle.ToString();
            }
            else if (parameters.TryGetValue(TitleKey, out var titleContent))
            {
                if (!string.IsNullOrEmpty(message))
                {
                    title = $"{titleContent}";
                }
                else
                {
                    message = $"{titleContent}";
                }
            }

            if (parameters.TryGetValue(IdKey, out var id))
            {
                try
                {
                    notifyId = Convert.ToInt32(id);
                }
                catch (Exception ex)
                {
                    // Keep the default value of zero for the notify_id, but log the conversion problem.
                    System.Diagnostics.Debug.WriteLine($"Failed to convert {id} to an integer {ex}");
                }
            }

            if (parameters.TryGetValue(NumberKey, out var num))
            {
                try
                {
                    notificationNumber = Convert.ToInt32(num);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine($"Failed to convert {num} to an integer {ex}");
                }
            }

            if (parameters.TryGetValue(ShowWhenKey, out var shouldShowWhen))
            {
                showWhenVisible = $"{shouldShowWhen}".ToLower() == "true";
            }


            if (parameters.TryGetValue(TagKey, out var tagContent))
            {
                tag = tagContent.ToString();
            }

            try
            {
                if (parameters.TryGetValue(SoundKey, out var sound))
                {
                    var soundName  = sound.ToString();
                    var soundResId = context.Resources.GetIdentifier(soundName, "raw", context.PackageName);
                    if (soundResId == 0 && soundName.IndexOf('.') != -1)
                    {
                        soundName  = soundName.Substring(0, soundName.LastIndexOf('.'));
                        soundResId = context.Resources.GetIdentifier(soundName, "raw", context.PackageName);
                    }

                    soundUri = new Android.Net.Uri.Builder()
                               .Scheme(ContentResolver.SchemeAndroidResource)
                               .Path($"{context.PackageName}/{soundResId}")
                               .Build();
                }
            }
            catch (Resources.NotFoundException ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.ToString());
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.ToString());
            }

            if (soundUri == null)
            {
                soundUri = RingtoneManager.GetDefaultUri(RingtoneType.Notification);
            }
            try
            {
                if (parameters.TryGetValue(IconKey, out var icon) && icon != null)
                {
                    try
                    {
                        smallIconResource = context.Resources.GetIdentifier(icon.ToString(), "drawable", Application.Context.PackageName);
                        if (smallIconResource == 0)
                        {
                            smallIconResource = context.Resources.GetIdentifier($"{icon}", "mipmap", Application.Context.PackageName);
                        }
                    }
                    catch (Resources.NotFoundException ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex.ToString());
                    }
                }

                if (smallIconResource == 0)
                {
                    smallIconResource = context.ApplicationInfo.Icon;
                }
                else
                {
                    var name = context.Resources.GetResourceName(smallIconResource);
                    if (name == null)
                    {
                        smallIconResource = context.ApplicationInfo.Icon;
                    }
                }
            }
            catch (Resources.NotFoundException ex)
            {
                smallIconResource = context.ApplicationInfo.Icon;
                System.Diagnostics.Debug.WriteLine(ex.ToString());
            }


            try
            {
                if (parameters.TryGetValue(LargeIconKey, out object largeIcon) && largeIcon != null)
                {
                    largeIconResource = context.Resources.GetIdentifier($"{largeIcon}", "drawable", Application.Context.PackageName);
                    if (largeIconResource == 0)
                    {
                        largeIconResource = context.Resources.GetIdentifier($"{largeIcon}", "mipmap", Application.Context.PackageName);
                    }
                }

                if (largeIconResource > 0)
                {
                    string name = context.Resources.GetResourceName(largeIconResource);
                    if (name == null)
                    {
                        largeIconResource = 0;
                    }
                }
            }
            catch (Resources.NotFoundException ex)
            {
                largeIconResource = 0;
                System.Diagnostics.Debug.WriteLine(ex.ToString());
            }

            if (parameters.TryGetValue(ColorKey, out var color) && color != null)
            {
                try
                {
                    notificationColor = Color.ParseColor(color.ToString());
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine($"{DomainTag} - Failed to parse color {ex}");
                }
            }

            Intent resultIntent = typeof(Activity).IsAssignableFrom(PushNotificationManager.NotificationActivityType) ? new Intent(Application.Context, PushNotificationManager.NotificationActivityType) : (PushNotificationManager.DefaultNotificationActivityType == null ? context.PackageManager.GetLaunchIntentForPackage(context.PackageName) : new Intent(Application.Context, PushNotificationManager.DefaultNotificationActivityType));

            var extras = new Bundle();

            foreach (var p in parameters)
            {
                extras.PutString(p.Key, p.Value.ToString());
            }

            if (extras != null)
            {
                extras.PutInt(ActionNotificationIdKey, notifyId);
                extras.PutString(ActionNotificationTagKey, tag);
                resultIntent.PutExtras(extras);
            }

            if (PushNotificationManager.NotificationActivityFlags != null)
            {
                resultIntent.SetFlags(PushNotificationManager.NotificationActivityFlags.Value);
            }
            var requestCode   = new Java.Util.Random().NextInt();
            var pendingIntent = PendingIntent.GetActivity(context, requestCode, resultIntent, PendingIntentFlags.UpdateCurrent);

            if (parameters.TryGetValue(ChannelIdKey, out var channelId) && channelId != null)
            {
                chanId = $"{channelId}";
            }

            var notificationBuilder = new NotificationCompat.Builder(context, chanId)
                                      .SetSmallIcon(smallIconResource)
                                      .SetContentTitle(title)
                                      .SetContentText(message)
                                      .SetAutoCancel(true)
                                      .SetWhen(Java.Lang.JavaSystem.CurrentTimeMillis())
                                      .SetContentIntent(pendingIntent);

            if (notificationNumber > 0)
            {
                notificationBuilder.SetNumber(notificationNumber);
            }

            if (Build.VERSION.SdkInt >= BuildVersionCodes.JellyBeanMr1)
            {
                notificationBuilder.SetShowWhen(showWhenVisible);
            }

            if (largeIconResource > 0)
            {
                Bitmap largeIconBitmap = BitmapFactory.DecodeResource(context.Resources, largeIconResource);
                notificationBuilder.SetLargeIcon(largeIconBitmap);
            }

            if (parameters.TryGetValue(FullScreenIntentKey, out var fullScreenIntent) && ($"{fullScreenIntent}" == "true" || $"{fullScreenIntent}" == "1"))
            {
                var fullScreenPendingIntent = PendingIntent.GetActivity(context, requestCode, resultIntent, PendingIntentFlags.UpdateCurrent);
                notificationBuilder.SetFullScreenIntent(fullScreenPendingIntent, true);
                notificationBuilder.SetCategory(NotificationCompat.CategoryCall);
                parameters[PriorityKey] = "high";
            }

            var deleteIntent = new Intent(context, typeof(PushNotificationDeletedReceiver));

            deleteIntent.PutExtras(extras);
            var pendingDeleteIntent = PendingIntent.GetBroadcast(context, requestCode, deleteIntent, PendingIntentFlags.UpdateCurrent);

            notificationBuilder.SetDeleteIntent(pendingDeleteIntent);

            if (Build.VERSION.SdkInt < BuildVersionCodes.O)
            {
                if (parameters.TryGetValue(PriorityKey, out var priority) && priority != null)
                {
                    var priorityValue = $"{priority}";
                    if (!string.IsNullOrEmpty(priorityValue))
                    {
                        switch (priorityValue.ToLower())
                        {
                        case "max":
                            notificationBuilder.SetPriority(NotificationCompat.PriorityMax);
                            notificationBuilder.SetVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });
                            break;

                        case "high":
                            notificationBuilder.SetPriority(NotificationCompat.PriorityHigh);
                            notificationBuilder.SetVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });
                            break;

                        case "default":
                            notificationBuilder.SetPriority(NotificationCompat.PriorityDefault);
                            notificationBuilder.SetVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });
                            break;

                        case "low":
                            notificationBuilder.SetPriority(NotificationCompat.PriorityLow);
                            break;

                        case "min":
                            notificationBuilder.SetPriority(NotificationCompat.PriorityMin);
                            break;

                        default:
                            notificationBuilder.SetPriority(NotificationCompat.PriorityDefault);
                            notificationBuilder.SetVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });
                            break;
                        }
                    }
                    else
                    {
                        notificationBuilder.SetVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });
                    }
                }
                else
                {
                    notificationBuilder.SetVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });
                }

                try
                {
                    notificationBuilder.SetSound(soundUri);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine($"{DomainTag} - Failed to set sound {ex}");
                }
            }

            // Try to resolve (and apply) localized parameters
            ResolveLocalizedParameters(notificationBuilder, parameters);

            if (notificationColor != null)
            {
                notificationBuilder.SetColor(notificationColor.Value);
            }

            if (Build.VERSION.SdkInt >= BuildVersionCodes.JellyBean)
            {
                // Using BigText notification style to support long message
                var style = new NotificationCompat.BigTextStyle();
                style.BigText(message);
                notificationBuilder.SetStyle(style);
            }

            var category = string.Empty;

            if (parameters.TryGetValue(CategoryKey, out var categoryContent))
            {
                category = categoryContent.ToString();
            }

            if (parameters.TryGetValue(ActionKey, out var actionContent))
            {
                category = actionContent.ToString();
            }

            var notificationCategories = CrossPushNotification.Current?.GetUserNotificationCategories();

            if (notificationCategories != null && notificationCategories.Length > 0)
            {
                foreach (var userCat in notificationCategories)
                {
                    if (userCat != null && userCat.Actions != null && userCat.Actions.Count > 0)
                    {
                        foreach (var action in userCat.Actions)
                        {
                            var aRequestCode = Guid.NewGuid().GetHashCode();
                            if (userCat.Category.Equals(category, StringComparison.CurrentCultureIgnoreCase))
                            {
                                Intent        actionIntent        = null;
                                PendingIntent pendingActionIntent = null;

                                if (action.Type == NotificationActionType.Foreground)
                                {
                                    actionIntent = typeof(Activity).IsAssignableFrom(PushNotificationManager.NotificationActivityType) ? new Intent(Application.Context, PushNotificationManager.NotificationActivityType) : (PushNotificationManager.DefaultNotificationActivityType == null ? context.PackageManager.GetLaunchIntentForPackage(context.PackageName) : new Intent(Application.Context, PushNotificationManager.DefaultNotificationActivityType));

                                    if (PushNotificationManager.NotificationActivityFlags != null)
                                    {
                                        actionIntent.SetFlags(PushNotificationManager.NotificationActivityFlags.Value);
                                    }

                                    extras.PutString(ActionIdentifierKey, action.Id);
                                    actionIntent.PutExtras(extras);
                                    pendingActionIntent = PendingIntent.GetActivity(context, aRequestCode, actionIntent, PendingIntentFlags.UpdateCurrent);
                                }
                                else
                                {
                                    actionIntent = new Intent(context, typeof(PushNotificationActionReceiver));
                                    extras.PutString(ActionIdentifierKey, action.Id);
                                    actionIntent.PutExtras(extras);
                                    pendingActionIntent = PendingIntent.GetBroadcast(context, aRequestCode, actionIntent, PendingIntentFlags.UpdateCurrent);
                                }

                                notificationBuilder.AddAction(context.Resources.GetIdentifier(action.Icon, "drawable", Application.Context.PackageName), action.Title, pendingActionIntent);
                            }
                        }
                    }
                }
            }

            OnBuildNotification(notificationBuilder, parameters);

            var notificationManager = (NotificationManager)context.GetSystemService(Context.NotificationService);

            notificationManager.Notify(tag, notifyId, notificationBuilder.Build());
        }
Example #23
0
 public override string GetString(int column)
 {
     switch (column)
     {
         case 0: // _ID
             return MPos.ToString(CultureInfo.InvariantCulture);
         case 1: // SuggestColumnText1
             return CurrentEntry.Strings.ReadSafe(PwDefs.TitleField);
         case 2: // SuggestColumnText2
             KeyValuePair<string, string> context;
             if (mResultContexts.TryGetValue(CurrentEntry.Uuid, out context))
             {
                 return Internationalise(context);
             }
             return null;
         case 3: // SuggestColumnIcon1
             var builder = new Android.Net.Uri.Builder();
             builder.Scheme(ContentResolver.SchemeContent);
             builder.Authority(Authority);
             builder.Path(GetIconPathQuery);
             builder.AppendQueryParameter(IconIdParameter, CurrentEntry.IconId.ToString());
             builder.AppendQueryParameter(CustomIconUuidParameter, CurrentEntry.CustomIconUuid.ToHexString());
             return builder.Build().ToString();
         case 4: // SuggestColumnIntentDataId
             return CurrentEntry.Uuid.ToHexString();
         default:
             return null;
     }
 }
 public static void FetchConfigDataMap(IGoogleApiClient googleApiClient, DataItemResultCallback fetchConfigDataMapCallback)
 {
     WearableClass.NodeApi.GetLocalNode (googleApiClient).SetResultCallback (
         new ResultCallback (localNodeResult => {
             var localNode = localNodeResult.Node.Id;
             var uri = new Android.Net.Uri.Builder ()
                     .Scheme ("wear")
                     .Path (DigitalWatchFaceUtil.PathWithFeature)
                     .Authority (localNode)
                     .Build ();
             WearableClass.DataApi.GetDataItem (googleApiClient, uri)
                     .SetResultCallback (fetchConfigDataMapCallback);
         }
         )
     );
 }