【问题标题】:Open the android app automatically based on the current location or on receiving push notification根据当前位置或收到推送通知自动打开 android 应用程序
【发布时间】:2013-03-18 02:43:12
【问题描述】:

我有一个android应用程序的要求,应用程序应该在以下2种情况下自动打开 - 当使用 android 设备的用户到达某个特定位置时。 - 当应用收到来自服务器的一些推送通知时。

我是android新手,有没有可能在上述两种情况下应用程序自动打开。

【问题讨论】:

  • 如果可以的话,请分享一些代码示例。
  • 您可以从Services 和广播接收器开始。
  • 您好 Naveen,感谢您的回复,当应用收到通知时是否可以自动打开?
  • 您的服务将收到位置更新或推送通知,然后您可以使用stackoverflow.com/a/3607934/649329打开您的应用

标签: android push-notification cordova


【解决方案1】:
  1. 对于基于位置的应用,请使用 Android 的 LocationManger

此类提供对系统位置服务的访问。这些服务允许应用程序获取设备地理位置的定期更新,或在设备进入给定地理位置附近时触发应用程序指定的 Intent。

  1. 对于推送消息使用GCM

【讨论】:

    【解决方案2】:

    几天前我遇到了这个问题(第二个)并想出了一个“临时”解决方案(可能不是最干净和最酷的)。尽管这个问题很老,但有人可能会遇到同样的问题并在这里找到一些价值。

    关于第二个问题,关于如何在收到推送通知时自动打开 Android 应用程序,请在服务类内部输入以下内容:

    Intent dialogIntent = new Intent(this, myActivity.class);
    dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(dialogIntent);
    

    请记住,上面的代码会切断通知声音,因此最好检查屏幕状态并在屏幕锁定时播放一些声音:

    /* Check if the device is locked, play ring tone and vibrator */
    if (!(((PowerManager) getSystemService(Context.POWER_SERVICE)).isScreenOn())){
      vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
      Sound = MediaPlayer.create(getApplicationContext(), R.raw.sound);
    
      try { Sound.start(); }                     
      catch(Exception e){ Log.i("intentService", "Error Playing sound");}
    
      vibrator.vibrate(3000);
    
    }
    
    dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(dialogIntent);
    

    另外,不要忘记发布媒体播放器!只是做一些研究,你会找到答案,有不同的方法,但一种方法可能是等到声音播放:

    Sound.isPlaying()
    

    然后释放:

    Sound.release()
    

    P.S:您可以将 notificationSound 设置为 null 并删除“if”条件,以便始终播放铃声(即使屏幕处于打开状态并自动打开应用程序)

    setSound(null)
    

    【讨论】:

      猜你喜欢
      • 2018-10-26
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 2017-11-21
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      相关资源
      最近更新 更多