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" }
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 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; } }
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); }
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); }
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" }
/// <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; // } }
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); }
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)"); } }
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); }
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 (); } }
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); }
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); }
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()); }
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); } ) ); }