标签: android-broadcast

如何检查Receiver是否在Android中注册?

我需要检查我的注册接收者是否仍然注册,如果不是我如何检查任何方法?

api android broadcastreceiver android-broadcast android-broadcastreceiver

236
推荐指数
8
解决办法
12万
查看次数

102
推荐指数
3
解决办法
6万
查看次数

Android广播接收器与服务

我试图澄清Android中广播接收器和服务之间的区别.

我知道活动可以通过调用startService意图来启动服务.

广播接收器可以在代码或清单中注册,并可以使用sendBroadcast.

你什么时候使用一个与另一个?

我知道多个广播接收器可以监听相同的意图,而服务并非如此.

android android-service android-broadcast

76
推荐指数
3
解决办法
5万
查看次数

我应该在接收器中使用android:process =":remote"吗?

我有一个每隔一段时间调用一次的BroadcastReceiver,我注意到很多人都在使用它

android: process =":remote" 
Run Code Online (Sandbox Code Playgroud)

在他们的接收器.我用来检查一些事情,如果条件匹配,则激活警报.我的问题是,我应该使用我在清单上面张贴的行吗?如果是这样的话,这样做有什么好处?

android broadcastreceiver android-broadcast

68
推荐指数
1
解决办法
3万
查看次数

Android中设备重启后广播接收器无法正常工作

我已经检查了所有相关问题,但没有找到解决此问题的任何方法.所以这对我来说是一个绝对新的问题.

是)我有的

我有一个Android应用程序,它在其清单中注册了几个广播接收器.这就是我的清单看起来的样子.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.app.myapp">

    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_CALL_LOG" />
    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
    <uses-permission android:name="com.android.vending.BILLING" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <uses-feature
        android:name="android.hardware.telephony"
        android:required="false" />

    <uses-feature
        android:name="android.hardware.screen.portrait"
        android:required="false" />

    <application
        android:name=".base.MyApp"
        android:allowBackup="false"
        android:icon="@drawable/ic_launcher"
        android:label="@string/label_app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="label, allowBackup">

        <receiver android:name=".mics.BootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            </intent-filter>
        </receiver>

        <receiver android:name=".PhoneCallReceiver">
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-broadcast android-broadcastreceiver

49
推荐指数
3
解决办法
2万
查看次数

在Android原生来电屏幕上弹出窗口,如真正的来电Android应用

我正在开发一个广播接收器,用于Android中的来电和接听来电,我想在本地来电屏幕上弹出一个弹出窗口.

我完成了那段代码.但现在的问题是,在Android 4.1(Jelly Bean)API级别17中,当电话响铃时,它PHONE_STATE就会出现OFF HOOK,如果我正在调用一个活动,它会被调用,但它下面的代码不会被执行.我列出了代码:

我的广播接收器

package com.example.popwindowonincomingcallscreen;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;

public class IncomingBroadcastReceiver extends BroadcastReceiver {

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

        Log.d("IncomingBroadcastReceiver: onReceive: ", "flag1");

        String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
        Log.d("IncomingBroadcastReceiver: onReceive: ", state);
        if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)
                || state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {

            Log.d("Ringing", "Phone is ringing");

            Intent i = new Intent(context, IncomingCallActivity.class);
            i.putExtras(intent);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
            Wait.oneSec();
            context.startActivity(i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在打电话的活动:

import android.app.Activity; …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-widget android-layout android-broadcast

48
推荐指数
6
解决办法
7万
查看次数

Android O:PHONE_STATE广播限制

我一直在尝试做类似于truecaller应用程序的东西,我的应用程序应该在呼叫挂断后显示一个屏幕.通过android.intent.action.PHONE_STATEmanifest文件中注册隐式广播来实现这一点.

但是,如果我将应用程序更改为目标Android O,则无法正常工作,因为Android O广播限制,我正在尝试找出此用例的替代解决方案.

替代方案建议在Android的文档:Job scheduler或注册一个servicecontext.

作业调度程序:由于Job scheduler优化,接收回调会有一些延迟.因此,如果我们的应用程序屏幕在电话呼叫后几分钟显示,并且每隔几秒检查一次新的呼叫记录就会导致电池耗尽问题,这将影响用户体验.

在Java中使用上下文注册服务:即使应用程序未处于活动状态或活动状态,我也希望该行为能够正常工作.如果系统杀死了,这将无效Service.

注册前台服务:这需要一直向用户显示通知,这将是用户的垃圾邮件,并且全天候运行服务会消耗大量资源,这会破坏广播限制的整个目的.

请建议一个替代解决方案,以便用户体验保持不变.

提前致谢

performance android android-broadcast android-broadcastreceiver android-8.0-oreo

34
推荐指数
1
解决办法
1290
查看次数

收听传入的Whatsapp消息/通知

我正在开发一个基于通知的应用程序,我需要收听传入的通知.我已经能够收听来电,短信,邮件等.我不知道如何通过代码在Whatsapp上听朋友的ping或消息.这可以实际完成吗?如果是这样,怎么样?可以使用Accessibility Service,使用Package Name作为"com.whatsapp"吗?

android android-intent android-notifications android-notification-bar android-broadcast

29
推荐指数
4
解决办法
6万
查看次数

通知中的音乐播放器控制

如何在android中设置播放/暂停,下一个和上一个按钮的通知.

我是Android的新手,也是堆栈溢出的新手.所以请耐心等待.

在此输入图像描述

我开始播放歌曲时设置通知,如下所示:

`

@SuppressLint("NewApi")
public void setNotification(String songName){
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager notificationManager = (NotificationManager) getSystemService(ns);


    @SuppressWarnings("deprecation")
    Notification notification = new Notification(R.drawable.god_img, null, System.currentTimeMillis());

    RemoteViews notificationView = new RemoteViews(getPackageName(), R.layout.notification_mediacontroller);

    //the intent that is started when the notification is clicked (works)
    Intent notificationIntent = new Intent(this, AudioBookListActivity.class);
    PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

    notification.contentView = notificationView;
    notification.contentIntent = pendingNotificationIntent;
    notification.flags |= Notification.FLAG_NO_CLEAR;

    //this is the intent that is supposed to be called when the button is clicked …
Run Code Online (Sandbox Code Playgroud)

android android-notifications android-mediaplayer android-broadcast

28
推荐指数
1
解决办法
3万
查看次数

如何在onStop()中检查屏幕开/关状态?

提到这里,当屏幕熄灭,在onStop()当前活动的将被调用.我需要在调用onStop()my 时检查屏幕的开/关状态Activity.所以我已经注册了BroadcastReceiver这些动作(ACTION_SCREEN_ONAND ACTION_SCREEN_OFF)来记录当前的开/关状态(并且它们正常工作,我已经记录了!).
但当我关闭屏幕并检查其中的开/关状态时onStop,表示屏幕已打开.为什么?我认为接收器必须接收ACTION_SCREEN_OFF之前onStop被调用所以有什么问题?

android android-activity android-broadcast

24
推荐指数
1
解决办法
2万
查看次数