protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it var registerButton = FindViewById<Button> (Resource.Id.registerButton); var unregisterButton = FindViewById<Button> (Resource.Id.unregisterButton); registerButton.Click += delegate { const string senders = "<Google Cloud Messaging Sender ID>"; var intent = new Intent("com.google.android.c2dm.intent.REGISTER"); intent.SetPackage("com.google.android.gsf"); intent.PutExtra("app", PendingIntent.GetBroadcast(this, 0, new Intent(), 0)); intent.PutExtra("sender", senders); StartService(intent); }; unregisterButton.Click += delegate { var intent = new Intent("com.google.android.c2dm.intent.UNREGISTER"); intent.PutExtra("app", PendingIntent.GetBroadcast(this, 0, new Intent(), 0)); StartService(intent); }; }
// Launch the device browser so the user can complete the checkout. private void OnWebCheckoutButtonClicked(object sender, EventArgs e) { var intent = new Intent(Intent.ActionView); intent.AddFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask); intent.SetData(Android.Net.Uri.Parse(SampleApplication.Checkout.WebUrl)); try { intent.SetPackage("com.android.chrome"); StartActivity(intent); } catch (Exception) { try { // Chrome could not be opened, attempt to us other launcher intent.SetPackage(null); StartActivity(intent); } catch (Exception) { OnError(GetString(Resource.String.checkout_error)); } } }
// http://stackoverflow.com/questions/6827407/how-to-customize-share-intent-in-android/9229654#9229654 private void initShareItent(String type) { bool found = false; Intent share = new Intent(Android.Content.Intent.ActionSend); share.SetType("image/jpeg"); // gets the list of intents that can be loaded. List<ResolveInfo> resInfo = PackageManager.QueryIntentActivities(share, 0).ToList(); if (resInfo.Count > 0) { foreach (ResolveInfo info in resInfo) { if (info.ActivityInfo.PackageName.ToLower().Contains(type) || info.ActivityInfo.Name.ToLower().Contains(type)) { share.PutExtra(Intent.ExtraSubject, "[Corpy] hi"); share.PutExtra(Intent.ExtraText, "Hi " + employee.Firstname); // share.PutExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(myPath)) ); // class atrribute share.SetPackage(info.ActivityInfo.PackageName); found = true; break; } } if (!found) return; StartActivity(Intent.CreateChooser(share, "Select")); } }
protected override void OnCreate(Bundle bundle) { base.OnCreate (bundle); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it Button btnGetRegID = FindViewById<Button> (Resource.Id.btnGetRegID); string senders = "374823337115"; Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER"); intent.SetPackage("com.google.android.gsf"); intent.PutExtra("app", PendingIntent.GetBroadcast(this, 0, new Intent(), 0)); intent.PutExtra("sender", senders); this.StartService(intent); txtRegID = FindViewById<TextView> (Resource.Id.txtRegID); btnGetRegID.Click += delegate { txtRegID.Text = appRegID; }; }
public void Connect() { var serviceIntent = new Intent ("ir.cafebazaar.pardakht.InAppBillingService.BIND"); serviceIntent.SetPackage("com.farsitel.bazaar"); int intentServicesCount = _activity.PackageManager.QueryIntentServices (serviceIntent, 0).Count; if (intentServicesCount != 0) { _activity.BindService (serviceIntent, this, Bind.AutoCreate); } }
private void RegisterForGCM() { string senders = Constants.GoogleConsoleProjectId; Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER"); intent.SetPackage("com.google.android.gsf"); intent.PutExtra("app", PendingIntent.GetBroadcast(this, 0, new Intent(), 0)); intent.PutExtra("sender", senders); StartService(intent); }
public override void OnReceive(Context context, Intent intent) { if (intent.Action != AudioManager.ActionAudioBecomingNoisy) return; //signal the service to pause! var pauseIntent = new Intent(MediaServiceBase.ActionPause); pauseIntent.SetPackage(context.PackageName); context.StartService(pauseIntent); }
// main class public void StartService() { string senders = "922250740088"; Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER"); intent.SetPackage("com.google.android.gsf"); intent.PutExtra("app", PendingIntent.GetBroadcast(Application.Context, 0, new Intent(), 0)); intent.PutExtra("sender", senders); Application.Context.StartService(intent); }
public void HandleClick() { Intent i = new Intent(Strings.ActionEntryActionSelected); i.SetPackage(_pluginPackage); i.PutExtra(Strings.ExtraActionData, _bundleExtra); i.PutExtra(Strings.ExtraFieldId, _fieldId); i.PutExtra(Strings.ExtraSender, _activity.PackageName); _activity.AddEntryToIntent(i); _activity.SendBroadcast(i); }
private void BroadcastNewTotp(string totp) { Intent i = new Intent(Strings.ActionSetEntryField); i.PutExtra(Strings.ExtraAccessToken,new PluginDatabase(_context).GetInternalToken()); i.SetPackage(_context.PackageName); i.PutExtra(Strings.ExtraSender, _context.PackageName); i.PutExtra(Strings.ExtraFieldValue, totp); i.PutExtra(Strings.ExtraEntryId, App.Kp2a.GetDb().LastOpenedEntry.Entry.Uuid.ToHexString()); i.PutExtra(Strings.ExtraFieldId, _totp); i.PutExtra(Strings.ExtraFieldProtected, true); _context.SendBroadcast(i); }
public void TryOpenMap(double latitude, double longitude, string findOption, bool flagActivity = false) { Android.Net.Uri intentUri = Android.Net.Uri.Parse ($"geo:{latitude.ToString(CultureInfo.InvariantCulture)},{longitude.ToString(CultureInfo.InvariantCulture)}?q={findOption}"); Android.Content.Intent mapIntent = new Android.Content.Intent(Android.Content.Intent.ActionView, intentUri); mapIntent.SetPackage("com.google.android.apps.maps"); if (flagActivity) { mapIntent.AddFlags(ActivityFlags.NewTask); } Android.App.Application.Context.StartActivity(mapIntent); }
public async Task RegisterForRemoteNotificationsAsync() { var context = Application.Context; var senderId = DonkyAndroid.Settings.GcmSenderId ?? _configurationManager.GetValue<string>("DefaultGCMSenderId"); Logger.Instance.LogInformation("Registering for GCM with SenderId {0}", senderId); var senders = senderId; var intent = new Intent("com.google.android.c2dm.intent.REGISTER"); intent.SetPackage("com.google.android.gsf"); intent.PutExtra("app", PendingIntent.GetBroadcast(context, 0, new Intent(), 0)); intent.PutExtra("sender", senders); context.StartService(intent); }
public override void OnViewCreated(View view, Bundle savedInstanceState) { base.OnViewCreated (view, savedInstanceState); ListView.ItemLongClick += (sender, e) => { var artist = ((ArtistAdapter)ListAdapter).GetArtistData (e.Position); var name = artist.Name.Replace (' ', '_'); name = Android.Net.Uri.Encode (name); var uri = "http://www.rdio.com/artist/" + name; var intent = new Intent (Intent.ActionView, Android.Net.Uri.Parse (uri)); intent.SetPackage ("com.rdio.android.ui"); StartActivity (intent); }; }
public static void RegisterService() { var keyStore = new LocalStore(); var interval = keyStore.GetString(Constants.Keys.Interval); if (string.IsNullOrEmpty(interval)) interval = "1"; var intervalTime = 60000 * int.Parse(interval); var serviceIntent = new Intent(Constants.GPSServiceIntent); serviceIntent.SetPackage(Application.Context.PackageName); var alarm = (AlarmManager)Application.Context.GetSystemService(Context.AlarmService); var pendingServiceIntent = PendingIntent.GetService(Application.Context, 0, serviceIntent, PendingIntentFlags.CancelCurrent); alarm.SetRepeating(AlarmType.Rtc, 0, intervalTime, pendingServiceIntent); }
public void Connect() { Intent intent = new Intent("ir.cafebazaar.pardakht.InAppBillingService.BIND"); intent.SetPackage("com.farsitel.bazaar"); IList<ResolveInfo> list = this._activity.PackageManager.QueryIntentServices(intent, 0); if (list == null) { this.RaiseOnInAppBillingError(InAppBillingErrorType.BillingNotSupported, "Unable to bind with com.android.vending.billing.InAppBillingService API."); this.Connected = false; } else if (list.Count != 0) { this._activity.BindService(intent, this, Bind.AutoCreate); } else { this.RaiseOnInAppBillingError(InAppBillingErrorType.BillingNotSupported, "Unable to access the com.android.vending service."); this.Connected = false; } }
protected override void OnHandleIntent(Intent intent) { try { var context = ApplicationContext; var action = intent.Action; switch (action) { case "com.google.android.c2dm.intent.REGISTRATION": var senders = "MySenderID"; var regIntent = new Intent("com.google.android.c2dm.intent.REGISTER"); regIntent.SetPackage("com.google.android.gsf"); regIntent.PutExtra("app", PendingIntent.GetBroadcast(context, 0, new Intent(), 0)); regIntent.PutExtra("sender", senders); context.StartService(regIntent); break; case "com.google.android.c2dm.UNREGISTER": var unregIntent = new Intent("com.google.android.c2dm.intent.UNREGISTER"); unregIntent.PutExtra("app", PendingIntent.GetBroadcast(context, 0, new Intent(), 0)); context.StartService(regIntent); break; case "com.google.android.c2dm.intent.RECEIVE": var eventid = intent.GetStringExtra("eventid"); var eventname = intent.GetStringExtra("eventname"); if (!string.IsNullOrEmpty(eventname) &&) App.Self.ChangedClass.BroadcastIt(eventname); break; } } finally { lock (LOCK) { if (wakeLock != null) wakeLock.Release(); } } }
internal static void internalUnRegister(Context context) { Logger.Debug("Unregistering app " + context.PackageName); var intent = new Intent(Constants.INTENT_TO_GCM_UNREGISTRATION); intent.SetPackage(GSF_PACKAGE); intent.PutExtra(Constants.EXTRA_APPLICATION_PENDING_INTENT, PendingIntent.GetBroadcast(context, 0, new Intent(), 0)); context.StartService(intent); }
internal static void internalRegister(Context context, params string[] senderIds) { if (senderIds == null || senderIds.Length <= 0) throw new ArgumentException("No senderIds"); var senders = string.Join(",", senderIds); Logger.Debug("Registering app " + context.PackageName + " of senders " + senders); var intent = new Intent(Constants.INTENT_TO_GCM_REGISTRATION); intent.SetPackage(GSF_PACKAGE); intent.PutExtra(Constants.EXTRA_APPLICATION_PENDING_INTENT, PendingIntent.GetBroadcast(context, 0, new Intent(), 0)); intent.PutExtra(Constants.EXTRA_SENDER, senders); context.StartService(intent); }
private static void CheckReceiver(Context context, HashSet<string> allowedReceivers, string action) { var pm = context.PackageManager; var packageName = context.PackageName; var intent = new Intent(action); intent.SetPackage(packageName); var receivers = pm.QueryBroadcastReceivers(intent, PackageInfoFlags.IntentFilters); if (receivers == null || receivers.Count <= 0) throw new InvalidOperationException("No receivers for action " + action); Logger.Debug("Found " + receivers.Count + " receivers for action " + action); foreach (var receiver in receivers) { var name = receiver.ActivityInfo.Name; if (!allowedReceivers.Contains(name)) throw new InvalidOperationException("Receiver " + name + " is not set with permission " + Constants.PERMISSION_GCM_INTENTS); } }
//The id for the video is the part after /watch?v= //So for example: id = "dQw4w9WgXcQ"; //Apparently, from the testing on 04.05.16, we got replies that said the video loading was slow to react. Uhm.. ok? private void PlayYoutubeVideo(string id) { Toast.MakeText(Activity, Resource.String.OpenVideo, ToastLength.Long).Show(); try { Intent intent = new Intent(Intent.ActionSearch); intent.SetPackage("com.google.android.youtube"); intent.PutExtra("query", id); intent.SetFlags(ActivityFlags.NewTask); StartActivity(intent); } catch { Intent intent = new Intent(Intent.ActionView, Android.Net.Uri.Parse("http://www.youtube.com/results?search_query=" + id)); StartActivity(intent); } }
private PendingIntent GetPendingIntent(string intentText, int descResId) { PendingIntent pending; Intent intent = new Intent(intentText); intent.SetPackage(_ctx.PackageName); pending = PendingIntent.GetBroadcast(_ctx, descResId, intent, PendingIntentFlags.CancelCurrent); return pending; }
public static void TriggerRequest(Context ctx, string pkgName, PluginDatabase pluginDatabase) { try { Intent triggerIntent = new Intent(Strings.ActionTriggerRequestAccess); triggerIntent.SetPackage(pkgName); triggerIntent.PutExtra(Strings.ExtraSender, ctx.PackageName); string requestToken = pluginDatabase.GetRequestToken(pkgName); triggerIntent.PutExtra(Strings.ExtraRequestToken, requestToken); Android.Util.Log.Debug(_tag, "Request token: " + requestToken); ctx.SendBroadcast(triggerIntent); } catch (Exception e) { } }
public void SetEnabled(string pluginPackage, bool enabled) { if (enabled) { string accessToken = Guid.NewGuid().ToString(); Intent i = new Intent(Strings.ActionReceiveAccess); i.SetPackage(pluginPackage); i.PutExtra(Strings.ExtraSender, _ctx.PackageName); i.PutExtra(Strings.ExtraRequestToken, GetPreferencesForPlugin(pluginPackage).GetString(_requesttoken, null)); i.PutExtra(Strings.ExtraAccessToken, accessToken); _ctx.SendBroadcast(i); StorePlugin(pluginPackage, accessToken, GetPluginScopes(pluginPackage)); } else { Intent i = new Intent(Strings.ActionRevokeAccess); i.SetPackage(pluginPackage); i.PutExtra(Strings.ExtraSender, _ctx.PackageName); i.PutExtra(Strings.ExtraRequestToken, GetPreferencesForPlugin(pluginPackage).GetString(_requesttoken, null)); _ctx.SendBroadcast(i); StorePlugin(pluginPackage, null, GetPluginScopes(pluginPackage)); } }
private void NotifyPluginsOnOpen() { Intent i = new Intent(Strings.ActionOpenEntry); i.PutExtra(Strings.ExtraSender, PackageName); AddEntryToIntent(i); foreach (var plugin in new PluginDatabase(this).GetPluginsWithAcceptedScope(Strings.ScopeCurrentEntry)) { i.SetPackage(plugin); SendBroadcast(i); } new Kp2aTotp().OnOpenEntry(); }
private void NotifyPluginsOnClose() { Intent i = new Intent(Strings.ActionCloseEntryView); i.PutExtra(Strings.ExtraSender, PackageName); foreach (var plugin in new PluginDatabase(this).GetPluginsWithAcceptedScope(Strings.ScopeCurrentEntry)) { i.SetPackage(plugin); SendBroadcast(i); } }
private void AddPluginAction(string pluginPackage, string fieldId, string popupItemId, string displayText, int iconId, Bundle bundleExtra) { if (fieldId != null) { try { //create a new popup item for the plugin action: var newPopup = new PluginPopupMenuItem(this, pluginPackage, fieldId, popupItemId, displayText, iconId, bundleExtra); //see if we already have a popup item for this field with the same item id var popupsForField = _popupMenuItems[fieldId]; var popupItemPos = popupsForField.FindIndex(0, item => (item is PluginPopupMenuItem) && ((PluginPopupMenuItem)item).PopupItemId == popupItemId); //replace existing or add if (popupItemPos >= 0) { popupsForField[popupItemPos] = newPopup; } else { popupsForField.Add(newPopup); } } catch (Exception e) { Kp2aLog.Log(e.ToString()); } } else { //we need to add an option to the menu. //As it is not sure that OnCreateOptionsMenu was called yet, we cannot access _menu without a check: Intent i = new Intent(Strings.ActionEntryActionSelected); i.SetPackage(pluginPackage); i.PutExtra(Strings.ExtraActionData, bundleExtra); i.PutExtra(Strings.ExtraSender, PackageName); PluginHost.AddEntryToIntent(i, App.Kp2a.GetDb().LastOpenedEntry); var menuOption = new PluginMenuOption() { DisplayText = displayText, Icon = PackageManager.GetResourcesForApplication(pluginPackage).GetDrawable(iconId), Intent = i }; if (_menu != null) { AddMenuOption(menuOption); } else { lock (_pendingMenuOptions) { _pendingMenuOptions.Add(menuOption); } } } }
/// <summary> /// Checks if the user should have access to the app. Binds the service if necessary. /// </summary> /// <param name="callback"> /// The callback. /// </param> public void CheckAccess(ILicenseCheckerCallback callback) { lock (this.locker) { // If we have a valid recent LICENSED response, we can skip asking Market/Play. if (this.policy.AllowAccess()) { System.Diagnostics.Debug.WriteLine("Using cached license response"); callback.Allow(PolicyServerResponse.Licensed); } else { var validator = new LicenseValidator( this.policy, new NullDeviceLimiter(), callback, GenerateNumberUsedOnce(), this.packageName, this.versionCode); if (this.licensingService == null) { try { var i = new Intent(LicensingServiceIntentString); i.SetPackage(LicensingServicePackageString); if (this.context.BindService(i, this, Bind.AutoCreate)) { this.pendingChecks.Enqueue(validator); } else { Debug.WriteLine("Could not bind to service."); this.HandleServiceConnectionError(validator); } } catch (Java.Lang.SecurityException) { callback.ApplicationError(CallbackErrorCode.MissingPermission); } catch (Exception ex) { Debug.WriteLine(ex.StackTrace); } } else { this.pendingChecks.Enqueue(validator); this.RunChecks(); } } } }
public override void OnReceive(Context context, Intent intent) { PluginDatabase pluginDb = new PluginDatabase(context); if (intent.Action == Strings.ActionRequestAccess) { var senderPackage = intent.GetStringExtra(Strings.ExtraSender); var requestToken = intent.GetStringExtra(Strings.ExtraRequestToken); var requestedScopes = intent.GetStringArrayListExtra(Strings.ExtraScopes); if (!AreScopesValid(requestedScopes)) { return; } if (pluginDb.GetRequestToken(senderPackage) != requestToken) { Log.Warn(_tag, "Invalid requestToken!"); return; } string currentAccessToken = pluginDb.GetAccessToken(senderPackage); if ((currentAccessToken != null) && (AccessManager.IsSubset(requestedScopes, pluginDb.GetPluginScopes(senderPackage)))) { //permission already there. var i = new Intent(Strings.ActionReceiveAccess); i.PutExtra(Strings.ExtraSender, context.PackageName); i.PutExtra(Strings.ExtraAccessToken, currentAccessToken); //TODO: Plugin should verify requestToken to make sure it doesn't receive accessTokens from malicious apps i.PutExtra(Strings.ExtraRequestToken, requestToken); i.SetPackage(senderPackage); context.SendBroadcast(i); Log.Debug(_tag, "Plugin " + senderPackage + " enabled."); } else { //store that scope was requested but not yet approved (=> accessToken = null) pluginDb.StorePlugin(senderPackage, null, requestedScopes); Log.Debug(_tag, "Plugin " + senderPackage + " not enabled."); //see if the plugin has an access token string accessToken = intent.GetStringExtra(Strings.ExtraAccessToken); if (accessToken != null) { //notify plugin that access token is no longer valid or sufficient Intent i = new Intent(Strings.ActionRevokeAccess); i.PutExtra(Strings.ExtraSender, context.PackageName); i.PutExtra(Strings.ExtraAccessToken, accessToken); i.SetPackage(senderPackage); context.SendBroadcast(i); Log.Warn(_tag, "Access token of plugin " + senderPackage + " not (or no more) valid."); } } if (OnReceivedRequest != null) OnReceivedRequest(this, new PluginHostEventArgs() { Package = senderPackage }); } }
private void Send() { Intent intent = new Intent(IntentRegisterAction); intent.SetPackage("com.google.android.gsf"); intent.PutExtra("sender", senderId); intent.PutExtra("app", appIntent); ComponentName name = null; try { name = context.StartService(intent); } catch (Exception) { // Do nothing. } }
private void NotifyPluginsOnModification(string fieldId) { Intent i = new Intent(Strings.ActionEntryOutputModified); i.PutExtra(Strings.ExtraSender, PackageName); i.PutExtra(Strings.ExtraFieldId, fieldId); AddEntryToIntent(i); foreach (var plugin in new PluginDatabase(this).GetPluginsWithAcceptedScope(Strings.ScopeCurrentEntry)) { i.SetPackage(plugin); SendBroadcast(i); } }
public async Task<NavigationResult> Navigate (AppLink appLink, JsonObject extras, RefererAppLink refererAppLink) { var context = Android.App.Application.Context; var pm = context.PackageManager; var appLinkDataJson = JsonSerializeAppLinkData (appLink, extras); Intent eligibleTargetIntent = null; foreach (var t in appLink.Targets) { var target = t as AndroidAppLinkTarget; if (target == null) continue; var targetIntent = new Intent (Intent.ActionView); if (target.Url != null) targetIntent.SetData (Android.Net.Uri.Parse(target.Url.ToString())); else targetIntent.SetData (Android.Net.Uri.Parse(appLink.SourceUrl.ToString())); targetIntent.SetPackage (target.Package); if (target.Class != null) targetIntent.SetClassName (target.Package, target.Class); targetIntent.PutExtra (KEY_APP_LINK_DATA, appLinkDataJson); var resolved = pm.ResolveActivity (targetIntent, Android.Content.PM.PackageInfoFlags.MatchDefaultOnly); if (resolved != null) { eligibleTargetIntent = targetIntent; break; } } if (eligibleTargetIntent != null) { eligibleTargetIntent.AddFlags (ActivityFlags.NewTask); context.StartActivity (eligibleTargetIntent); return NavigationResult.App; } // Fall back to the web if it's available if (appLink.WebUrl != null) { var webUrl = BuildUrl(appLink, appLink.WebUrl, extras); var handled = RaiseWillNavigateToWebUrl (webUrl); if (!handled) { Intent launchBrowserIntent = new Intent (Intent.ActionView, Android.Net.Uri.Parse (webUrl.ToString ())); launchBrowserIntent.AddFlags (ActivityFlags.NewTask); context.StartActivity (launchBrowserIntent); } return NavigationResult.Web; } return NavigationResult.Failed; }