安装referrer无法在某些redmi设备中运行

时间:2017-07-27 13:54:12

标签: android android-studio google-analytics android-broadcastreceiver install-referrer

我需要跟踪我的Android应用的安装引荐。它在大多数设备中都能正常工作。但在Redmi设备中,广播没有被触发。我用Redmi Note 4测试了它

我已经通过ADB和Play商店测试了它。两者都不会在Redmi设备中触发广播

以下是我正在使用的代码

public class ReferrerReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
           Log.d("Broadcast", "RECEIVED!");
        }
}


<receiver
    android:name=".receiver.ReferrerReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER"/>
    </intent-filter>
</receiver>

请建议是否有人遇到同样的问题并获得解决方案?

5 个答案:

答案 0 :(得分:3)

您的应用是否位于&#34;受保护的应用列表中?允许在后台运行?如果没有,它将无法自动启动。这是小米,华为等设备的问题。在&#34;设置 - &gt;应用程序 - 安全&#34;中应该有一个设置页面。这允许您将应用程序添加到允许自动启动,在后台运行的应用程序列表等。每个设备制造商都这样做有点不同,但总的来说,我们在中国设备上看到这一点,以节省电池寿命

另见:

答案 1 :(得分:0)

在Redmi设备中,一些Android应用程序需要权限。请在设备中手动允许权限。通过在您的设备中使用应用权限选项授予所有权限。它可能适用于我的应用程序。

答案 2 :(得分:0)

我使用Redmi 3 Pro并且总是遇到Android权限问题。小米设备有时会使用导致权限请求错误的自定义ROM。

在我安装的每个应用中,重叠服务权限始终强制设置为拒绝。我必须手动允许

我找到了很好的解决方法,让小米设备自动启动权限:How to get MIUI Security app auto start permission programmatically?

答案 3 :(得分:0)

miui总是存在一些问题,因为他们对后台进程的限制你可以在这里打开它们是怎么回事

1:转到设置 - &gt;管理应用的电池使用情况 - &gt;选择应用。从那里,选择您想要接收推送通知的所有应用,然后选择“无限制。”

2:转到设置 - &gt;权限 - &gt;自动开启。从那里,选择您想要的应用程序,并切换开关以打开它。

3:在“最近的应用”/“应用概述”平面中锁定应用。首先打开应用程序,然后按“最近的应用程序/概述按钮”(这是Android上的方形按钮,或Mi Mix上有三条水平线的按钮)。从那里,找到你想要接收通知的应用程序,下拉它以“锁定它”,这样它就永远不会被清除。

4:最后一步需要开发人员选项权限。要启用它,请转到设置(男人......我已经厌倦了输入“转到设置”...) - &gt;关于手机 点击MIUI版本选项卡八次。然后,您应该收到一条消息,说“您现在是开发人员”。然后返回设置,转到开发人员选项,滚动到接近底部,找到“内存优化”,然后将其关闭。

同样,也许第4步就是你所需要的。

答案 4 :(得分:-2)

您可以使用Google的Play Install Referrer Library api 1.0解决此问题。我是这样做的,并且在默认情况下阻止自动启动的设备上运行良好。

首先将以下行添加到您的应用程序的build.gradle文件的依赖项部分:

InstallReferrerClient mReferrerClient

mReferrerClient = InstallReferrerClient.newBuilder(this).build();
mReferrerClient.startConnection(new InstallReferrerStateListener() {
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
    switch (responseCode) {
        case InstallReferrerResponse.OK:
            // Connection established
            break;
        case InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
            // API not available on the current Play Store app
            break;
        case InstallReferrerResponse.SERVICE_UNAVAILABLE:
            // Connection could not be established
            break;
    }
}
@Override
public void onInstallReferrerServiceDisconnected() {
    // Try to restart the connection on the next request to
    // Google Play by calling the startConnection() method.
}
});

}

然后,您应在Activity中实现接口InstallReferrerStateListener及其方法onInstallReferrerSetupFinished和onInstallReferrerServiceDisconnected

调用newBuilder()方法创建InstallReferrerClient类的实例。

调用startConnection()建立与Google Play的连接。

startConnection()方法是异步的,因此您必须重写InstallReferrerStateListener才能在startConnection()完​​成之后接收回调。

您还应该重写onInstallReferrerSetupFinished()方法来处理与Google Play的丢失连接。例如,如果Play商店服务在后台更新,则Play安装引荐来源库客户端可能会失去连接。库客户端必须在发出进一步请求之前调用startConnection()方法重新启动连接。

示例:

ReferrerDetails response = mReferrerClient.getInstallReferrer();
response.getInstallReferrer();
response.getReferrerClickTimestampSeconds();
response.getInstallBeginTimestampSeconds();

与Play商店应用建立连接后:

使用同步的getInstallReferrer()方法返回ReferrerDetails。 然后,使用ReferrerDetails中的方法获取安装时间戳记和引荐来源网址。

{{1}}

有关更多信息: https://developer.android.com/google/play/installreferrer/library

希望这会有所帮助!