android - 我的广播接收器是显式的还是隐式的?

标签 android android-broadcastreceiver

在阅读了一些关于此的手册(12)后,我仍然需要帮助。我将我的应用程序定位到 android O,在 android 7.0 上它工作正常,但在 8.1 上我似乎没有收到任何广播。那么,如果在 list 中以 android O 为目标并在 7.0 上运行并使用隐式广播,它仍然可以工作吗? 您能帮我确定我的广播是显式的还是隐式的吗? 我正在使用Awareness API...

list :

   <receiver android:name=".DetectionBroadcastReceiver" >
        <intent-filter>
            <action android:name="childincar.com.michlindevelopment.DETECTIONFENCE" />
        </intent-filter>
    </receiver>

检测广播接收器

public class DetectionBroadcastReceiver extends BroadcastReceiver {

    Context context;

    @Override
    public void onReceive(Context context, Intent intent) {


        Log.d("DTAG", "onReceive");
        this.context = context;

        if (!TextUtils.equals(Constans.FENCE_RECEIVER_ACTION, intent.getAction())) {
            return;
        }

        //Some Code
    }
}

康斯坦斯

public class Constans {
    public static final String FENCE_RECEIVER_ACTION = BuildConfig.APPLICATION_ID + ".DETECTIONFENCE";
}

注册

 public static void registerFences(final Context context) {

        Intent intent = new Intent(Constans.FENCE_RECEIVER_ACTION);
        PendingIntent mPendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);


        Awareness.getFenceClient(context).updateFences(new FenceUpdateRequest.Builder()
                .addFence(Constans.DETECTION_FENCE_DRIVING, DetectedActivityFence.starting(DetectedActivity.IN_VEHICLE), mPendingIntent)
                .addFence(Constans.DETECTION_FENCE_WALKING, DetectedActivityFence.starting(DetectedActivity.WALKING), mPendingIntent)
                .build())
                .addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {

                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {

                    }
                });
    }

最佳答案

任何非“特定”于您的应用的广播都是隐式的。例如,“ACTION_MY_PACKAGE_REPLACED”的广播接收器特定于您的应用,应该是显式的,而“ACTION_PACKAGE_REPLACED”是隐式的,因为它会通知您所有包的信息。

您的广播接收器似乎是隐含的,因为它不仅仅是为“您的”应用程序设计的。

关于android - 我的广播接收器是显式的还是隐式的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50998444/

相关文章:

android - 从服务器向sqlite插入数据

Android Studio 项目与 Github

java - 我们可以制作矩形戒指吗?

android - BroadcastReceiver 的 onReceive 中 Intent extra 为空

java - 广播接收器和内存泄漏

android - "Frequency Shift Keying"安卓解码器

android - 是否需要调用 FirebaseApp.initializeApp() 来初始化 firebase?

java - Android 调用广播接收器无法正常工作? (棉花糖)

java - 为什么我的 Screen On/Off BroadcastReceiver 不工作?

android - AlarmManager 和 WakefullBroadcastReceiver 传递的 Extras 有多私密?