0

フラグメントの 1 つ内のボタンをクリックすると、testalarm を設定しようとしています。しかし、アラームは表示されません。

public class AlarmReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub

            Toast.makeText(context, "OnReceive alarm test", Toast.LENGTH_SHORT).show();
        }
    }

//Button is inside a Fragment
Button SetAlarmButton = (Button)(v.findViewById(R.id.SetAlarmButton));       
        SetAlarmButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                try{
                    Calendar alarm = Calendar.getInstance();

                    alarm.set(Calendar.HOUR_OF_DAY, 18);
                    alarm.set(Calendar.MINUTE, 00);
                    long alarmMillis = alarm.getTimeInMillis();
                    Intent intent = new Intent(view.getContext(), AlarmReceiver.class);
                    PendingIntent pendingIntent = PendingIntent.getBroadcast(view.getContext(), 192837, intent, 
                                                              PendingIntent.FLAG_UPDATE_CURRENT);
                    AlarmManager am = (AlarmManager) view.getContext().getSystemService(view.getContext().ALARM_SERVICE);
                    am.set(AlarmManager.RTC_WAKEUP, alarmMillis , pendingIntent);

                }catch(Throwable e){AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
                    StringWriter sw = new StringWriter();
                    PrintWriter pw = new PrintWriter(sw);
                    e.printStackTrace(pw);
                    sw.toString();  
                    builder.setMessage(sw.toString());
                    AlertDialog alert = builder.create();
                    alert.show();
                }
        }}); 

マニフェストを変更してこのようなものを追加する必要があることは知っていますが、正確な方法と場所はわかりません

<receiver android:name="AlarmReceiver">
            ....
        </receiver>

私のマニフェストに

<?xml version="1.0" encoding="UTF-8"?>
<manifest android:versionCode="1" android:versionName="1.0"
    package="com.test.alarm" xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
    <application android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" android:theme="@style/AppTheme">
        <activity android:label="@string/title_activity_main" android:name=".Main">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity 
            android:name=".First_Start"
        />    
        <activity
            android:name=".Preferences"
            android:label="Settings">
        </activity>
    </application>
</manifest>
4

2 に答える 2

0
Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_MESSAGE, "New Alarm");
i.putExtra(AlarmClock.EXTRA_HOUR, hours);
i.putExtra(AlarmClock.EXTRA_MINUTES, mins);
startActivity(i);

しかし、これではアラームを設定したい日を指定できません

于 2012-10-07T16:46:29.827 に答える
0

AlarmManager のドキュメントを確認してください: http://developer.android.com/reference/android/app/AlarmManager.html

設定しているアラームは、時計アプリケーションに組み込まれている目覚まし時計機能とは関係ありません。

システムはアラームを使用して、アプリケーションが将来何らかのイベントに応答できるようにします。基本的に、アプリを一定時間起動するようにシステムに指示し、アラームが鳴ったときに呼び出されるアクティビティを定義します。

于 2012-10-07T16:40:40.767 に答える