gpt4 book ai didi

android - 广播接收器

转载 作者:太空狗 更新时间:2023-10-29 16:05:27 25 4
gpt4 key购买 nike

我是 android 的新手,我正在尝试使用 Broadcast Receiver 做一个应用程序,当设备上的墙纸发生变化时,它会将消息发送到通知栏。它已成功安装在设备上,但未按预期工作。这是代码

WallPagerNotificationReceiver.java

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;

import android.util.Log;
import android.widget.Toast;

public class WallPaperNotificationReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
this.sendNotification(context, "You have changed Wallpaper");
}
private void sendNotification(Context ctx, String message)
{
//Get the notification manager
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nm =
(NotificationManager)ctx.getSystemService(ns);

//Create Notification Object
int icon = R.drawable.ic_launcher;
CharSequence tickerText = "Hello";
long when = System.currentTimeMillis();

Notification notification =
new Notification(icon, tickerText, when);

//Set ContentView using setLatestEvenInfo
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com"));
PendingIntent pi = PendingIntent.getActivity(ctx, 0, intent, 0);
notification.setLatestEventInfo(ctx, "Intimation", message, pi);

//Send notification
nm.notify(1, notification);
Toast.makeText(ctx,"Hello Nawin",Toast.LENGTH_LONG).show();
}

}

list .xlm

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

<uses-sdk android:minSdkVersion="15" />

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

<receiver android:name=".WallPaperNotificationReceiver">
<intent-filter>
<action android:name="android.intent.action.WALLPAPER_CHANGED" />
</intent-filter>
</receiver>
</application>
</manifest>

这是使用广播接收器的正确方法吗?如果是这样,请帮助我在哪里做错了?

提前致谢。

P.S:我既没有使用 Activity 也没有使用 Service。根据进程生命周期,我们可以通过托管广播接收器来拥有一个前台进程 http://developer.android.com/guide/components/processes-and-threads.html#Threads

最佳答案

自 Android 版本 3.1 起,仅在 list 和没有 Activity 的应用程序中注册的 BroadcastReceivers 将无法工作。每个应用程序都必须有一个 Activity ,该 Activity 必须至少运行一次才能使接收器工作。这是为了防止恶意软件。您只需要一个虚拟 Activity ,该 Activity 什么都不做,然后退出运行一次并使您的接收器工作。

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

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