Android widget如何从中获取小时和分钟的时间?

Android widget如何从中获取小时和分钟的时间?,android,widget,alarmmanager,Android,Widget,Alarmmanager,在我的应用程序中,我创建了小部件以模拟时钟格式显示时间。当点击小部件实际显示报警类时,为该小部件设置报警,并且其工作正常 为此,我使用了以下代码: 当点击小部件时,我在更新中调用此小部件,并从中获取报警类: PendingIntent pendingIntent = PendingIntent.getActivity( context, 0, getAlarmPackage(context), 0); rv_ana.setOnClickPendingIntent(R.id.clock,

在我的应用程序中,我创建了小部件以模拟时钟格式显示时间。当点击小部件实际显示报警类时,为该小部件设置报警,并且其工作正常

为此,我使用了以下代码:

当点击小部件时,我在更新中调用此小部件,并从中获取报警类:

PendingIntent pendingIntent = PendingIntent.getActivity(
    context, 0, getAlarmPackage(context), 0);
rv_ana.setOnClickPendingIntent(R.id.clock, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, rv_ana);
报警功能和方法:

public Intent getAlarmPackage(Context context) {
    PackageManager packageManager = context.getPackageManager();
    Intent AlarmClockIntent = new Intent(Intent.ACTION_MAIN)
            .addCategory(Intent.CATEGORY_LAUNCHER);

    String clockImpls[][] = {
            { "Standard Alarm", "com.android.alarmclock",
                    "com.android.alarmclock.AlarmClock" },
            { "HTC Alarm ClockDT", "com.htc.android.worldclock",
                    "com.htc.android.worldclock.WorldClockTabControl" },
            { "Standard Alarm ClockDT", "com.android.deskclock",
                    "com.android.deskclock.AlarmClock" },
            { "Froyo Nexus Alarm ClockDT", "com.google.android.deskclock",
                    "com.android.deskclock.DeskClock" },
            { "Moto Blur Alarm ClockDT", "com.motorola.blur.alarmclock",
                    "com.motorola.blur.alarmclock.AlarmClock" },
            { "Samsung Galaxy S", "com.sec.android.app.clockpackage",
                    "com.sec.android.app.clockpackage.ClockPackage" } 
    };

    boolean foundClockImpl = false;

    for (int i = 0; i < clockImpls.length; i++) {
        String packageName = clockImpls[i][1];
        String className = clockImpls[i][2];
        try {
            ComponentName cn = new ComponentName(packageName, className);
            packageManager.getActivityInfo(
                        cn, PackageManager.GET_META_DATA);
            AlarmClockIntent.setComponent(cn);    
            foundClockImpl = true;
        } catch (NameNotFoundException nf) {
        }
    }
    if (foundClockImpl) {
        return AlarmClockIntent;
    } else {
        return null;
    }
}
公共意图getAlarmPackage(上下文){ PackageManager PackageManager=context.getPackageManager(); 意图AlarmClockIntent=新意图(Intent.ACTION\u MAIN) .addCategory(意图.CATEGORY_发射器); 字符串clockImpls[][]={ {“标准闹钟”,“com.android.alarmclock”, “com.android.alarmclock.alarmclock”}, {“HTC Alarm ClockDT”,“com.HTC.android.worldclock”, “com.htc.android.worldclock.WorldClockTabControl”}, {“标准闹钟时钟”,“com.android.deskclock”, “com.android.deskclock.AlarmClock”}, {“Froyo Nexus Alarm ClockDT”,“com.google.android.deskclock”, “com.android.deskclock.deskclock”}, {“Moto Blur Alarm ClockDT”,“com.motorola.Blur.alarmclock”, “com.motorola.blur.alarmclock.alarmclock”}, {“三星Galaxy S”,“com.sec.android.app.clockpackage”, “com.sec.android.app.clockpackage.clockpackage”} }; 布尔foundClockImpl=false; 对于(int i=0;i 但我的要求是,从这个报警功能中,我如何以小时和分钟获得时间。实际上,该功能会自动显示警报,但我想知道时间。
有没有可能?帮帮我?

如果你想要闹钟时间,可以用这个

String nextAlarm = Settings.System.getString(getContentResolver(),
Settings.System.NEXT_ALARM_FORMATTED);
然后将其转换为日期

String string = nextAlarm;//Tue 8:30"
Date date = new SimpleDateFormat("EEE HH:mm", Locale.ENGLISH).parse(string);
System.out.println(date);

这个问题对我来说不太清楚。假设您需要从闹钟获取闹钟时间小时和分钟

final String tag_alarm = "tag_alarm";
Uri uri = Uri.parse("content://com.android.alarmclock/alarm");
Cursor c = getContentResolver().query(uri, null, null, null, null);
Log.i(tag_alarm, "no of records are " + c.getCount());
Log.i(tag_alarm, "no of columns are " + c.getColumnCount());
if (c != null) {
    String names[] = c.getColumnNames();
    for (String temp : names) {
        System.out.println(temp);
    }
    if (c.moveToFirst()) {
        do {
            for (int j = 0; j < c.getColumnCount(); j++) {
                Log.i(tag_alarm, c.getColumnName(j)
                        + " which has value " + c.getString(j));
            }
        } while (c.moveToNext());
    }
}
final String tag\u alarm=“tag\u alarm”;
Uri=Uri.parse(“content://com.android.alarmclock/alarm");
游标c=getContentResolver().query(uri,null,null,null,null);
Log.i(tag_报警,“记录数为”+c.getCount());
Log.i(tag_报警,“列数为”+c.getColumnCount());
如果(c!=null){
字符串名称[]=c.getColumnNames();
用于(字符串临时值:名称){
系统输出打印项次(温度);
}
if(c.moveToFirst()){
做{
对于(int j=0;j
读了两遍你的问题后,我仍然不知道你想要什么。如果您想知道当前时间,可以使用
Calendar.getInstance().get(Calendar.HOUR\u OF\u DAY)
等。那么您想从报警应用程序将报警时间返回到您的小部件吗?我也多次阅读了这个问题,不清楚您想要什么。您希望您发布的代码能够访问实际时间还是小部件上显示的时间?或者是由意图引发的主要问题?确实令人困惑。但他得到了3张选票……:)我不想在日历上浪费时间。您知道如何从操作系统支持的软件包中设置报警,如上所示。从上面的例子中,我们必须通过设置直接根据我的代码将警报设置到小部件。但是我想从那个类中得到时间。上面发布的代码和我一样,也对我有效。当我们设置警报时,它工作正常。我们怎样才能从上面的代码中得到以小时和分钟为单位的时间。不。。实际上我们在alarm中设置了一个时间,这是我想完成程序维护的时间。alarm的剩余时间或alarm time。以小时和分钟为单位的alarm timings让我们在一个函数中调用上面的代码,该函数在c.getCount()处显示空指针异常;