데이터베이스에 저장된 시간 값으로 알람을 재생해야하는 앱이 있습니다. "notification.defaults = Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE;"문을 삭제하면 알림이 표시됩니다. 난 내 application.My 경보 클래스를 clossing 강제로 다음 위의 문 경보 연극을 삽입합니다 alarm.when를 재생하지 않고 그 알람 시간은 다음입니다 :NotificationManager를 사용하여 예외가 발생했습니다.
public class AlarmManager extends BroadcastReceiver {
sampleDatabase appdb;
SQLiteDatabase sqldb;
Cursor cursor;
int today,prev;
Intent in;
@Override
public void onReceive(Context context, Intent intent)
{
NotificationManager manger = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.icon , "Yahrzeit" , System.currentTimeMillis());
in = new Intent(context,FirstAppActivity.class);
in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, in, 0);
notification.setLatestEventInfo(context, "ALERT!!!!", "Time Over" , contentIntent);
notification.defaults=Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE;
notification.flags = Notification.FLAG_INSISTENT;
appdb = new sampleDatabase(context);
sqldb = appdb.getReadableDatabase();
cursor = sqldb.query(sampleDatabase.TABLE_SEC, null, null, null, null, null, null);
cursor.moveToFirst();
Calendar cal = Calendar.getInstance();
cal.set(Calendar.SECOND, 0);
today = (int)(cal.getTimeInMillis()/1000);
Log.e("Naga","Alarm");
Log.e("today",Integer.toString(today));
prev = 0;
cursor.moveToPrevious();
while(cursor.moveToNext())
{
int dbdate = cursor.getInt(cursor.getColumnIndex(sampleDatabase.ALARMSET));
int id = cursor.getInt(cursor.getColumnIndex(sampleDatabase.ROW_ID));
Log.e("dbdate",Integer.toString(dbdate));
if((dbdate<=today)&&(dbdate>prev))
{
manger.cancelAll();
manger.notify(1, notification);
sqldb.execSQL("DELETE from " + sampleDatabase.TABLE + " where " + sampleDatabase.ROW_ID + "=" + id);
sqldb.execSQL("DELETE from "+sampleDatabase.TABLE_SEC + " where " + sampleDatabase.ROW_ID + "=" + id);
}
prev = dbdate;
}
cursor.close();
sqldb.close();
}
내 로그 캣보기 (내가 진동 권한을 삽입 한이 같다,)이 오류도 발생합니다.) :
11-14 18:09:18.000: ERROR/AndroidRuntime(757): FATAL EXCEPTION: main
11-14 18:09:18.000: ERROR/AndroidRuntime(757): java.lang.RuntimeException: Unable to start receiver com.nagainfo.firstAp.AlarmManager: java.lang.SecurityException: Requires VIBRATE permission
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2821)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.app.ActivityThread.access$3200(ActivityThread.java:125)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.os.Handler.dispatchMessage(Handler.java:99)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.os.Looper.loop(Looper.java:123)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at java.lang.reflect.Method.invokeNative(Native Method)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at java.lang.reflect.Method.invoke(Method.java:521)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at dalvik.system.NativeStart.main(Native Method)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): Caused by: java.lang.SecurityException: Requires VIBRATE permission
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.os.Parcel.readException(Parcel.java:1247)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.os.Parcel.readException(Parcel.java:1235)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:274)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.app.NotificationManager.notify(NotificationManager.java:110)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.app.NotificationManager.notify(NotificationManager.java:90)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at com.nagainfo.firstAp.AlarmManager.onReceive(AlarmManager.java:52)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2810)
11-14 18:09:18.000: ERROR/AndroidRuntime(757): ... 10 more
Pls 나를 도와주세요. 내 매니페스트는 다음과 같습니다
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FirstAppActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".addtable"
android:label="@string/app_name">
</activity>
<activity android:name=".showTime"
android:label="@string/app_name">
</activity>
<activity android:name=".edittable"
android:label="@string/app_name">
</activity>
<receiver android:name="AlarmManager">
</receiver>
<uses-permission android:name="android.permission.READ_CALENDAR"/>
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<uses-permission android:name="android.permission.VIBRATE"/>
</application>
제목이 변경되었습니다. 32 비트 및 64 비트 OS가 실제로 작동하지 않았습니다. – Simon
@ Simon 감사합니다. 내 제목을 변경하는 것을 잊었습니다. – Techy