检测应用程序安装

时间:2013-09-23 02:49:04

标签: android

编辑:管理解决它。创建了一个新项目,在卸载之前清除了应用数据,重新安装了它,并且它神奇地工作了。谢谢你的帮助。

我正在尝试检测安装应用的时间,但我不太确定我哪里出错了。我在这里检查了几个问题,但我似乎无法弄明白。我对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>

4 个答案:

答案 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中无法实现。没有广播说,已经安装了一个应用程序。