2016-07-21 19 views
0

我有一个应用程序通过更改版本代码而用新版本进行了远程更新。更新从后端推送,手机正在使用adb OTA客户端更新apk。当我的应用程序更新了新版本代码时如何接收广播本身android

完成OTA更新后,我需要使用应用程序以编程方式将状态发送到后端。

我可以这样做,使用启动器,它实际上正在接收包更改或删除相关的意图操作,然后启动主应用程序。然后,应用程序会将OTA更新状态发送到后端,而无需任何用户交互。 以下是示例代码。 在桌面应用清单:

<receiver android:name=".receivers.PackageChangedReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.PACKAGE_REMOVED" /> 
       <action android:name="android.intent.action.PACKAGE_CHANGED" /> 
       <data android:scheme="package"/> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </receiver> 

这里是接收器:

@Override 
    public void onReceive(Context context, Intent intent) { 
     String packageName=intent.getData().getEncodedSchemeSpecificPart(); 
     if(packageName.contains(context.getString("packagename"))) 
     context.startActivity(new Intent(context, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK)); 
    } 

现在我的问题是我怎么可以做同样的事情一样推出的主要的应用程序,并发送OTA仅在OTA更新后的应用程序中使用主应用程序更新状态,而不在应用程序中启动任何启动器和用户交互?

+0

我不明白你的问题。你说你已经在做这些事情,然后你问怎么做?请更详细地解释你正在做什么以及你没有做什么,但需要帮助。 –

+0

@DavidWasser是的,我可以使用第三方应用程序(如启动器应用程序)负责接收主应用程序包更改广播状态并将其发送到后端。我的问题是,我可以做同样的事情,没有任何第三方应用程序的帮助。只使用我的主要应用程序。 – 0xalihn

回答

0

您可以让自己的应用程序捕获广播Intent,就像启动程序的应用程序一样。然后你可以做你想做的。创建应用程序中的BroadcastReceiver这些条目添加到清单:

<receiver android:name=".MyBroadcastReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.PACKAGE_CHANGED" /> 
     </intent-filter> 
    </receiver> 

你不需要<category><data>标签和,因为如果您的应用程序被删除,你不会得到它是没有意义的监听PACKAGE_REMOVED无论如何。

+0

我无法从我的应用程序本身接收广播接收器。我已经在我的应用程序中实现了这一点,并将其安装到设备中,然后在安装apk(adb install apk)之后首先卸载软件包(adb uninstall packagename),但安装后我无法在BroadcastReceiver中获得任何日志。这意味着BroadcastReceiver没有拨打电话。 – 0xalihn

+0

不,如果你卸载,然后重新安装这将无法正常工作。你在你的问题中说过你正在做OTA“更新”。我认为你是**更新现有的应用程序**。如果您的应用程序正在被卸载然后重新安装,您无法执行任何操作,因为您的应用程序需要先执行手动操作才能执行任何操作。 –

+0

如果你不想使用第三方工具来管理这个,你可以自己编写另一个应用程序。该应用程序将安装在设备上,它会监视应用程序的安装/移除,它可以在安装时自动启动您的应用程序,并可以自动更新您的服务器(就像第三方应用程序一样)。但这必须是一个单独的应用程序。 –

相关问题