- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试学习 android,所以我正在制作一些应用程序来玩弄它以适应它。我现在正在做的事情有问题,我正在尝试制作一个短信通知应用程序,但它总是在模拟器中强制关闭。这是我的代码
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.os.Bundle;
import android.telephony.SmsMessage;
public class Sms extends BroadcastReceiver {
static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context arg0, Intent arg1) {
NotificationManager mNotificationManager = (NotificationManager) arg0.getSystemService(Context.NOTIFICATION_SERVICE);
if (arg1.getAction().equals(ACTION)) {
StringBuilder sb = new StringBuilder();
String from = new String();
String body = new String();
Bundle bundle = arg1.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
for (Object pdu : pdus){
SmsMessage messages = SmsMessage.createFromPdu((byte[]) pdu);
sb.append(messages.getDisplayOriginatingAddress());
from = messages.getDisplayOriginatingAddress();
sb.append(messages.getDisplayMessageBody());
body= messages.getDisplayMessageBody();
//Log.i(LOG_TAG, "[SMSApp] onReceiveIntent: " + sb);
//abortBroadcast();
}// end for
}//end if
int icon = R.drawable.icon;
CharSequence tickerText = from + ": " + body;
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
CharSequence contentTitle = "New SMS Message";
CharSequence contentText = sb.toString();
Intent notificationIntent = new Intent();
PendingIntent contentIntent = PendingIntent.getActivity(arg0, 0, notificationIntent, 0);
notification.setLatestEventInfo(arg0, contentTitle, contentText, contentIntent);
notification.vibrate = new long[] { 100, 250, 100, 500};
notification.flags |= Notification.FLAG_AUTO_CANCEL;
mNotificationManager.notify(1, notification);
}//end if
}
}
这是我的 manifest.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.froyo"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FroyoTest"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".Sms">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
</manifest>
我不明白是什么问题,因为它每次都强制关闭
这是 logcat 错误
02-02 11:35:46.896: ERROR/System(66): Failure starting core service
02-02 11:35:46.896: ERROR/System(66): java.lang.SecurityException
02-02 11:35:46.896: ERROR/System(66): at android.os.BinderProxy.transact(Native Method)
02-02 11:35:46.896: ERROR/System(66): at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146)
02-02 11:35:46.896: ERROR/System(66): at android.os.ServiceManager.addService(ServiceManager.java:72)
02-02 11:35:46.896: ERROR/System(66): at com.android.server.ServerThread.run(SystemServer.java:184)
02-02 11:36:09.847: ERROR/ActivityManager(66): ANR in com.android.settings
02-02 11:36:09.847: ERROR/ActivityManager(66): Reason: Broadcast of Intent { act=android.intent.action.CLOSE_SYSTEM_DIALOGS cmp=com.android.settings/.widget.SettingsAppWidgetProvider (has extras) }
02-02 11:36:09.847: ERROR/ActivityManager(66): Load: 2.95 / 0.74 / 0.24
02-02 11:36:09.847: ERROR/ActivityManager(66): CPU usage from 7048ms to 569ms ago:
02-02 11:36:09.847: ERROR/ActivityManager(66): app_process: 52% = 39% user + 13% kernel / faults: 2461 minor
02-02 11:36:09.847: ERROR/ActivityManager(66): system_server: 46% = 28% user + 17% kernel / faults: 704 minor 3 major
02-02 11:36:09.847: ERROR/ActivityManager(66): ronsoft.openwnn: 40% = 25% user + 15% kernel / faults: 3986 minor 6 major
02-02 11:36:09.847: ERROR/ActivityManager(66): ndroid.launcher: 26% = 14% user + 11% kernel / faults: 3701 minor 3 major
02-02 11:36:09.847: ERROR/ActivityManager(66): m.android.phone: 25% = 13% user + 12% kernel / faults: 3322 minor 7 major
02-02 11:36:09.847: ERROR/ActivityManager(66): ndroid.settings: 19% = 9% user + 10% kernel / faults: 3007 minor 7 major
02-02 11:36:09.847: ERROR/ActivityManager(66): bootanimation: 10% = 5% user + 4% kernel
02-02 11:36:09.847: ERROR/ActivityManager(66): sh: 1% = 0% user + 0% kernel / faults: 118 minor
02-02 11:36:09.847: ERROR/ActivityManager(66): qemud: 0% = 0% user + 0% kernel
02-02 11:36:09.847: ERROR/ActivityManager(66): TOTAL: 100% = 65% user + 34% kernel
02-02 11:36:32.439: ERROR/HierarchicalStateMachine(66): TetherMaster - unhandledMessage: msg.what=3
02-02 11:37:48.610: ERROR/AndroidRuntime(278): FATAL EXCEPTION: main
02-02 11:37:48.610: ERROR/AndroidRuntime(278): java.lang.RuntimeException: Unable to start receiver com.example.froyo.Sms: java.lang.SecurityException: Requires VIBRATE permission
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2821)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.app.ActivityThread.access$3200(ActivityThread.java:125)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.os.Handler.dispatchMessage(Handler.java:99)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.os.Looper.loop(Looper.java:123)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at java.lang.reflect.Method.invokeNative(Native Method)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at java.lang.reflect.Method.invoke(Method.java:521)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at dalvik.system.NativeStart.main(Native Method)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): Caused by: java.lang.SecurityException: Requires VIBRATE permission
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.os.Parcel.readException(Parcel.java:1247)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.os.Parcel.readException(Parcel.java:1235)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:274)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.app.NotificationManager.notify(NotificationManager.java:110)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.app.NotificationManager.notify(NotificationManager.java:90)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at com.example.froyo.Sms.onReceive(Sms.java:51)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2810)
02-02 11:37:48.610: ERROR/AndroidRuntime(278): ... 10 more
02-02 11:37:54.500: ERROR/ContactsProvider(172): Cannot determine the default account for contacts compatibility
02-02 11:37:54.500: ERROR/ContactsProvider(172): android.accounts.AuthenticatorException: bind failure
02-02 11:37:54.500: ERROR/ContactsProvider(172): at android.accounts.AccountManager.convertErrorToException(AccountManager.java:1433)
02-02 11:37:54.500: ERROR/ContactsProvider(172): at android.accounts.AccountManager.access$400(AccountManager.java:134)
02-02 11:37:54.500: ERROR/ContactsProvider(172): at android.accounts.AccountManager$BaseFutureTask$Response.onError(AccountManager.java:1338)
02-02 11:37:54.500: ERROR/ContactsProvider(172): at android.accounts.IAccountManagerResponse$Stub.onTransact(IAccountManagerResponse.java:69)
02-02 11:37:54.500: ERROR/ContactsProvider(172): at android.os.Binder.execTransact(Binder.java:288)
02-02 11:37:54.500: ERROR/ContactsProvider(172): at dalvik.system.NativeStart.run(Native Method)
最佳答案
添加振动权限修复了它
关于安卓短信通知问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4870069/
我有一个应用程序应该在应用程序处于前台和后台(不在历史记录中)时显示提醒通知。 在前景情况下,我通过以下方法实现了这一点。 PendingIntent pendingIntent = PendingI
如何为我的 WPF 应用程序创建通知,例如浏览器上的通知,它们通过浏览器顶部的“工具栏”显示消息或通过在右下角向上/向下滑动的弹出窗口显示“MSN”样式通知屏幕。也许在应用程序中心淡入/淡出的面板可以
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我正在使用 Redis 作为分布式缓存。我有不同的应用程序,它们只听特定的键。例如:App1 听 App1.*App2 监听 App2.* 等等。 我的应用程序使用以下模式接收通知:App1:“ ke
我正在尝试构建一个基于官方节点 docker 镜像的 docker 镜像,我想知道是否有某种方法可以在推送新版本的官方节点镜像时自动重建镜像。这样我的图像就不会基于过时的基础图像。 也许有类似 rss
我在一个项目中工作,我需要在添加或修改文件时在数据库中记录文件信息,以便它们保持同步。这些文件应该存储在 Nextcloud 服务器中,那么 Nextcloud 是否有办法通知这些更改(例如 webh
通知类中的方法via 如何根据用户的偏好动态变化,一个用户可能想通过电子邮件接收,而另一个用户则不想 public function via($notifiable) { return ['d
我有一个应用程序,我正在发送推送通知,如果用户登录到应用程序,这很好 - 但是,如果他们没有/如果他们没有在 X 分钟内阅读通知,我想给他们发送一封电子邮件. 我要解决的方法是使用 Laravel N
我正在使用 Django 的 contrib.comments 并想了解以下内容。 是否有任何实用程序或应用程序可以插入到某个应用程序中,当对某个项目发表评论时向您发送通知? 我并没有真正使用过那么多
我希望用户在启动应用程序之前接受协议(protocol)。所以在 appDelegate.m 中我有以下内容: - (BOOL)application:(UIApplication *)applica
我正在创建一个新指令,我想知道如何在 angular 从 DOM 中删除元素时收到通知。 我的目标是在删除元素时添加 jquery 动画。 最佳答案 如果您尝试对元素的移除进行动画处理,则需要在移除元
我正在编写一个应用程序,其工作方式与Apple的Weather.app非常相似:底部有一个UIPageControl,屏幕中间有一个UIScrollView。在我的代码中,我实现了 - (void)s
如何查明 iPhone 注册了哪些通知? 例如: notify_post("com.apple.springboard/Prefs"); 最佳答案 虽然这个问题的答案已经得到确认,但由于 @Nate
我的 Cocoa 应用程序中有一个 TextField。该文本字段有时会被填充,有时会为空。 我希望当字段为空时按钮被禁用。现在,每当我对 Core Data 执行某些操作时,我都会检查该字段,Tex
我的应用程序在其数据库中包含文档。用户可以打开文档,在这种情况下,文档将保存到临时文件夹并在用户计算机上打开。 我希望在这些临时文件之一发生更改时收到通知,并让用户将更改后的文档保存回数据库。 在 D
我目前正在开发一个网络应用程序,它不断对 php 进行 ajax 调用(轮询),以从数据库中提取新的“任务”,有点像 gmail/facebook 检查新电子邮件和消息的方式。当前的 JavaScri
我正在尝试让通知适用于我使用 Angular 5 和 Electron 制作的 Electron 应用程序。到目前为止,我的 index.html 文件中有以下代码: function doNo
我有一个录音/播放应用程序。它在后台运行。当它进入后台时,如果任何其他音频应用程序打开或开始使用音频资源,我想适本地处理我的应用程序。 iOS 提供了一种发送此类通知的方法,如在 ipod 播放器中看
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
是否有 Subversion 的工具可以在对某些文件提交更改时自动通知我? 最佳答案 您可以创建一个 post-commit hook script “ Hook ”提交。 在钩子(Hook)脚本中,
我是一名优秀的程序员,十分优秀!