• Как явно указать в Google Calendar Android за сколько минут до события вызывать reminder?

    @ramovich Автор вопроса
    в общем решил вопрос без активности, путем добавления явного запроса разрешения на запись в календарь

    public void addEvent(Context context, long dat1, long dat2, String titl) {
    
                try {
                    ContentResolver cr = context.getContentResolver();
                    ContentValues values = new ContentValues();
                    values.put(CalendarContract.Events.DTSTART, dat1);
                    values.put(CalendarContract.Events.DTEND, dat2);
                    values.put(CalendarContract.Events.TITLE, titl);
                    values.put(CalendarContract.Events.CALENDAR_ID, 1);
                    values.put(CalendarContract.Events.EVENT_TIMEZONE, Calendar.getInstance()
                            .getTimeZone().getID());
                    System.out.println(Calendar.getInstance().getTimeZone().getID());
                    Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
    
                    // Save the eventId into the Task object for possible future delete.
                    long meventId = Long.parseLong(uri.getLastPathSegment());
                    // Add a 5 minute, 1 hour and 1 day reminders (3 reminders)
                    setReminder(cr, meventId, 1);
    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
            // routine to add reminders with the event
            public void setReminder(ContentResolver cr, long eventID, int timeBefore) {
                try {
                    ContentValues values = new ContentValues();
                    values.put(CalendarContract.Reminders.MINUTES, timeBefore);
                    values.put(CalendarContract.Reminders.EVENT_ID, eventID);
                    values.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT);
                    Uri uri = cr.insert(CalendarContract.Reminders.CONTENT_URI, values);
                    Cursor c = CalendarContract.Reminders.query(cr, eventID,
                            new String[]{CalendarContract.Reminders.MINUTES});
                    if (c.moveToFirst()) {
                        System.out.println("calendar"
                                + c.getInt(c.getColumnIndex(CalendarContract.Reminders.MINUTES)));
                    }
                    c.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }


    if (checkSelfPermission(Manifest.permission.WRITE_CALENDAR)
                                    == PackageManager.PERMISSION_GRANTED) {
                                addEvent(getApplicationContext(), millis, (millis + 60 * 60 * 1000), evtext);
                                otvet="Событие добавлено";
                            } else {
                                ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_CALENDAR}, 1);
                                otvet="Разреши мне доступ к календарю чтобы добавить напоминание, а после повтори команду устанавливающую напоминание еще раз.";
                            }
    Ответ написан
    Комментировать
  • Как переписать пример сервера с node.js на python?

    @ramovich Автор вопроса
    from aiohttp import web
    import socketio
    import asyncio
    import time
    
    sio = socketio.AsyncServer()
    app = web.Application()
    sio.attach(app)
    
    async def sendmg(interval: int):
        while True:
            await sio.emit('newwind', '1')
            await asyncio.sleep(interval)
    
    async def index(request):
        """Serve the client-side application."""
        with open('index.html') as f:
            return web.Response(text=f.read(), content_type='text/html')
    
    @sio.event
    async def connect(sid, environ):
        print("connect ", sid)
        
    @sio.event
    def disconnect(sid):
        print('disconnect ', sid)
    
    app.router.add_static('/static', 'static')
    app.router.add_get('/', index)
    asyncio.ensure_future(sendmg(3))
    web.run_app(app)
    web.run_app(app)
    Ответ написан
    Комментировать
  • Я хочу установить через pip модуль pyperclip, но мне выдаёт ошибку. Что мне делать?

    @ramovich
    Удалите питон через панель управления, переустановите его на диск D указав в инсталляторе галочку Add to Path, скачайте https://bootstrap.pypa.io/get-pip.py этот скрипт и запустите его от имени админа, далее запустите от имени админа командную строку и установите еще pip install wheel

    Ну а далее пробуйте уже pip install wget и прочие модули. Всё время запускайте командную строку только от имени администратора. На время отключите антивирус.
    Ответ написан
    Комментировать