你可以使用Google的Play Install Referrer Library api 1.0来解决这个问题。我就是这样做的,在默认情况下阻止自动启动的设备上运行良好。
首先,在应用程序的build.gradle文件的dependencies部分中添加以下行:
dependencies {
...
compile 'com.android.installreferrer:installreferrer:1.0'
}
你应该在你的Activity中实现InstallReferrerStateListener接口及其onInstallReferrerSetupFinished和onInstallReferrerServiceDisconnected方法。
调用newBuilder()方法创建一个InstallReferrerClient类的实例。
调用startConnection()方法建立与Google Play的连接。
startConnection()方法是异步的,因此你必须重写InstallReferrerStateListener以在startConnection()完成后接收回调。
你还应该覆盖onInstallReferrerSetupFinished()方法处理与Google Play的断开连接。例如,如果Play商店服务正在后台更新,Play安装参考库客户端可能会失去连接。库客户端必须调用startConnection()方法重新启动连接,然后再进行进一步请求。
示例:
InstallReferrerClient mReferrerClient
mReferrerClient = InstallReferrerClient.newBuilder(this).build();
mReferrerClient.startConnection(new InstallReferrerStateListener() {
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerResponse.OK:
break;
case InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
break;
case InstallReferrerResponse.SERVICE_UNAVAILABLE:
break;
}
}
@Override
public void onInstallReferrerServiceDisconnected() {
}
});
在连接到Play Store应用程序之后:
使用同步的getInstallReferrer()方法返回ReferrerDetails。
然后,使用ReferrerDetails中的方法获取安装时间戳和引荐人URL。
ReferrerDetails response = mReferrerClient.getInstallReferrer()
response.getInstallReferrer()
response.getReferrerClickTimestampSeconds()
response.getInstallBeginTimestampSeconds()
更多信息请参考:
https://developer.android.com/google/play/installreferrer/library
希望这能有所帮助!
if (Objects.equals(intent.getAction(), Intent.ACTION_INSTALL_PACKAGE)) { Log.d("Broadcast", "RECEIVED!"); }
吗? - Ashutosh Sagar