gpt4 book ai didi

java - 如何在 Oreo (8.0) 中使用隐式广播 PACKAGE_ADDED?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:51:10 25 4
gpt4 key购买 nike

我必须接收系统发送的隐式广播 (ACTION_PACKAGE_ADDED) 以检测应用程序的安装并执行一些代码。我使用了下面的代码:

public class Receiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// It will trigger when any app is installed
Uri data = intent.getData();
String packageAdv = data.getEncodedSchemeSpecificPart();
//some code...
}
}

在我的 Manifest 文件中,我声明了我的接收者:

<receiver android:name="com.myapp.Receiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package"/>
</intent-filter>
</receiver>

它在版本 8.0 Oreo 之前完美运行。现在,我必须使用 registerReceiver 使我的接收器显式化。我怎样才能做到这一点?示例代码将不胜感激。

最佳答案

我决定创建一个简单的服务来监听 PACKAGE_ADDED 事件。

public class MyService extends Service {
private BroadcastReceiver receiver;

public MyService() { }

@Override
public void onCreate() {
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
intentFilter.addDataScheme("package");
receiver = new Receiver();
registerReceiver(receiver, intentFilter);
}

//ensure that we unregister the receiver once it's done.
@Override
public void onDestroy() {
unregisterReceiver(receiver);
}

@Override
public IBinder onBind(Intent intent) {
return null;
}

}

此外,我需要在 manifest 文件中声明我的服务:

<service
android:name="com.nolesh.myapp.MyService"
android:enabled="true">
</service>

关于java - 如何在 Oreo (8.0) 中使用隐式广播 PACKAGE_ADDED?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49362639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com