标签: broadcastreceiver

Android - 启动时启动服务

从我在Stack Exchange和其他地方看到的所有东西,我已经正确设置了所有东西,以便在Android OS启动时启动IntentService.不幸的是它没有启动,我没有收到任何错误.也许专家可以提供帮助......

表现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.phx.batterylogger"
  android:versionCode="1"
  android:versionName="1.0"
  android:installLocation="internalOnly">

<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BATTERY_STATS" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <service android:name=".BatteryLogger"/>
    <receiver android:name=".StartupIntentReceiver">  
        <intent-filter>  
            <action android:name="android.intent.action.BOOT_COMPLETED" />  
        </intent-filter>  
    </receiver>
</application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

BroadcastReceiver for Startup:

package com.phx.batterylogger;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class StartupIntentReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent serviceIntent = new Intent(context, BatteryLogger.class);
        context.startService(serviceIntent);
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:我尝试了下面的所有建议,并且我将日志记录添加Log.v("BatteryLogger", "Got to onReceive, …

java android broadcastreceiver intentservice

96
推荐指数
1
解决办法
10万
查看次数

Android,检测其他应用程序何时启动

我正在尝试开发一个应用程序,防止用户在没有密码的情况下访问指定的应用程序.情景是......

  1. 用户点击"电子邮件"应用(例如)
  2. 我的应用检测到应用的启动
  3. 我的应用程序确认它是"电子邮件"应用程序
  4. 我的应用程序在顶部打开一个视图,要求输入密码
  5. 用户输入密码,如果正确,我的应用程序将消失,将"电子邮件"应用程序保留在最顶层

我正在做剩下的事情,只是第2部分令我感到困惑,经过多天阅读广播意图等并试图在我的试验项目中听"android.intent.action.MAIN"等我不能似乎检测到我的应用程序何时启动.

有人可以帮忙吗?我是否正确地寻找新的应用程序广播意图启动,或者我应该阅读系统日志以获取新意图,或者使用本机代码执行某些操作?

任何指针都会有所帮助,即使你无法完全回答它,我也可以做更多的研究.非常感谢.伊恩

android broadcastreceiver android-intent

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

服务中的广播接收器

我想在一个BroadcastReceiver内部启动Service.我想要做的是有一个后台运行service,收集传入的短信,并记录来电.我认为最好的解决方法是service运行一个包含可以编目的广播接收器.

我该怎么做呢?我已经启动并运行了我的服务.

sms android broadcastreceiver android-service

86
推荐指数
2
解决办法
9万
查看次数

Android - 从广播接收器onReceive()获取上下文以发送到

我基本上想要创建一个intent并将它传递给我的BroadcastReceiver的onReceive()服务.

到目前为止,我总是使用View.getContext(),但在这里,我被卡住了.我怎样才能获得上下文以便我可以使用public Intent (Context packageContext, Class<?> cls)

service android broadcastreceiver android-intent android-context

80
推荐指数
1
解决办法
4万
查看次数

何时注册/取消注册活动中创建的广播接收器?

我需要在活动的onCreate事件中创建自定义广播接收器,显然我需要在活动的onDestroy事件中取消注册广播接收器

为清楚起见,这是我使用的代码片段

public class AnActivity extends Activity {
    private ResponseReceiver receiver;

    public class ResponseReceiver extends BroadcastReceiver {
           public static final String ACTION_RESP =
              "mypackagename.intent.action.MESSAGE_PROCESSED";

           @Override
            public void onReceive(Context context, Intent intent) {
// TODO Start a dialogue if message indicates successfully posted to server
            }
    }   

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        IntentFilter filter = new IntentFilter(ResponseReceiver.ACTION_RESP);
        filter.addCategory(Intent.CATEGORY_DEFAULT);
        receiver = new ResponseReceiver();
        registerReceiver(receiver, filter);
    }

    @Override
    public void onDestroy() …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver

75
推荐指数
4
解决办法
5万
查看次数

检查INTENT互联网连接

Intent ACTION_XXX当有Internet连接时,是否有Android 通知我?

我想实例化BroadcastReceiver当用户启用Internet连接时通知我的应用程序(通过wifi,通过GSM等)

谁能帮助我?

android broadcastreceiver android-intent

69
推荐指数
8
解决办法
7万
查看次数

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

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

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

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

android broadcastreceiver android-broadcast

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

广播接收器在清单与活动中注册

我需要一些帮助来了解何时我可以预期我的广播接收器只能在清单中注册而不必从正在运行的活动或服务进行注册.

因此,例如,如果我使用以下intent过滤器注册一个独立的接收器,它可以在没有服务/活动引用的情况下工作:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.blk_burn.standalonereceiver"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <receiver android:name="TestReceiver">
            <intent-filter>
                <action android:name="android.media.AUDIO_BECOMING_NOISY"/>
            </intent-filter>
        </receiver>

    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

但是如果我更换android.media.AUDIO_BECOMING_NOISYandroid.intent.action.HEADSET_PLUG接收器没有被触发(Android文档)

根据我在本网站上发现的内容,您必须从已经运行的活动或服务中注册此接收器(Post).

  • 任何人都可以告诉我为什么这只是在清单中调整你的意图过滤器以及为什么你需要在后台运行引用/注册接收器的服务?

  • 是否有一个解决方法,以便我可以使用意图过滤器在我的应用程序的清单中注册我的接收器android.intent.action.HEADSET_PLUG

  • 如何识别Android文档中哪些广播操作需要有服务或活动注册它们而不是在清单中使用正确的过滤器?

android intentfilter broadcastreceiver android-intent

68
推荐指数
2
解决办法
5万
查看次数

BroadcastReceiver没有收到BOOT_COMPLETED

我在这里寻找类似的问题,但由于某种原因,我的BroadcastReceiver永远不会收到android.intent.action.BOOT_COMPLETED Intent.

这是我的(相对)Android.Manifest文件:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>    
<receiver android:name=".BootReceiver"
        android:enabled="true"
        android:exported="true"
        android:label="BootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"></action>

        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

这是实际的接收器.

public class BootReceiver extends BroadcastReceiver {
private static final String TAG="BootReceiver";

@Override public void onReceive(Context context,Intent intent){
    try{
        context.startService(new Intent(context,ConnectivityListener.class));
        Log.i(TAG,"Starting Service ConnectivityListener");
    }catch(Exception e){
        Log.e(TAG,e.toString());
    }
}
}
Run Code Online (Sandbox Code Playgroud)

谢谢!任何帮助是极大的赞赏

boot android broadcastreceiver

66
推荐指数
6
解决办法
9万
查看次数

服务意图必须是明确的:意图

我现在有一个应用程序,我通过广播接收器(MyStartupIntentReceiver)调用服务.广播接收器中用于呼叫服务的代码是:

public void onReceive(Context context, Intent intent) {
    Intent serviceIntent = new Intent();
    serviceIntent.setAction("com.duk3r.eortologio2.MyService");
    context.startService(serviceIntent);
}
Run Code Online (Sandbox Code Playgroud)

问题是在Android 5.0 Lollipop中我收到以下错误(在以前版本的Android中,一切正常):

Unable to start receiver com.duk3r.eortologio2.MyStartupIntentReceiver: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.duk3r.eortologio2.MyService }
Run Code Online (Sandbox Code Playgroud)

为了将服务声明为显式并正常启动,我需要更改什么?尝试在其他类似的线程中的一些答案,但虽然我摆脱了消息,服务将无法启动.

service android broadcastreceiver

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