编辑:管理解决它。创建了一个新项目,在卸载之前清除了应用数据,重新安装了它,并且它神奇地工作了。谢谢你的帮助。
我正在尝试检测安装应用的时间,但我不太确定我哪里出错了。我在这里检查了几个问题,但我似乎无法弄明白。我对android很新,所以我可能错过了一些明显的东西。这是我所拥有的测试案例。
我将它安装到手机上,流程和服务显示为在设置中运行。然后,我从Play商店下载一个应用程序,检查logcat,应用程序中没有任何内容。
对我出错的地方有任何帮助吗?感谢。
编辑:
在玩了一些之后,我有一些新的示例测试代码。安装新软件包时,onReceive方法不会触发。但是,当我测试时,我在BroadcastReceiver类中添加了一个构造函数,每次安装包时都会触发构造函数。所以,它似乎正在接收意图,但onReceive中的日志似乎永远不会打印出来。有什么想法吗?
public class InstallReceiver extends BroadcastReceiver {
public InstallReceiver()
{
//This log will display in the logcat
Log.d("InstallReceiver", "InstallReceiver constructor called.");
}
@Override
public void onReceive(Context context, Intent intent) {
//This log never displays if the constructor is in or commented out
Log.d("InstallReceiver", "Install detected.");
}
}
<receiver android:name=".InstallReceiver">
<intent-filter >
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<action android:name="android.intent.action.PACKAGE_INSTALL" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
答案 0 :(得分:1)
也包含在
中<receiver android:name=".InstallReceiver">
<intent-filter >
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
你所做的其他事情似乎都是正确的。
唯一的另一种可能性是prijupaul说,出于安全原因,这个广播可能不再起作用了。
答案 1 :(得分:0)
来自developer.android.com参考。 - &#34;请注意,新安装的软件包不接收此广播。&#34; - 这样您就无法检测到自己的软件包安装。它应该检测其他软件包安装。
答案 2 :(得分:0)
Documentation说:“广播操作:设备上已安装新的应用程序包。数据包含软件包的名称。请注意,新安装的软件包不接收此广播。< /强>“
答案 3 :(得分:-1)
AFAIK,出于隐私原因,这在Android中无法实现。没有广播说,已经安装了一个应用程序。