С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для HanDi
898 / 345 / 65
Регистрация: 11.02.2012
Сообщений: 1,502

Ошибка администраторских прав: Request to add invalid device admin

09.02.2016, 13:55. Показов 1601. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пробую получить права администратора примерно таким образом как описано вот тут (или тут).

Так вот при попытке получения прав (нажатие на кнопку), на долю секунды выскакивает это окошко с получением прав и сразу же пропадает.

Не понимаю, в чем проблема.

В итоге в логах вываливается:

W/DeviceAdminAdd﹕ Request to add invalid device admin: ComponentInfo{com.example.lockscreentest/com.example.lockscreentest.MyAdmin}

I/DeviceAdminSample﹕ Admin enable FAILED!

Смотрел и гугл и dev android, нигде не могу найти по этой ошибке информацию.

На всякий случай приложу код:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.lockscreentest"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="21"/>
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="LockScreenActivity"
                  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=".MyAdmin" android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data android:name="android.app.device_admin" android:resource="@xml/policies">
                <intent-filter>
                    <action android:name="android.app.action.DEVICE_ADMIN_ENABLED">
                    </action></intent-filter>
            </meta-data>
        </receiver>
    </application>
</manifest>

policies:


XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-policies>
        <limit-password />
        <watch-login />
        <reset-password />
        <force-lock />
        <wipe-data />
        <expire-password />
        <encrypted-storage />
        <disable-camera />
    </uses-policies>
</device-admin>
MyAdmin.java:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.example.lockscreentest;
 
import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.widget.Toast;
 
public class MyAdmin extends DeviceAdminReceiver {
 
    static SharedPreferences getSamplePreferences(Context context) {
        return context.getSharedPreferences(
                DeviceAdminReceiver.class.getName(), 0);
    }
 
    static String PREF_PASSWORD_QUALITY = "password_quality";
    static String PREF_PASSWORD_LENGTH = "password_length";
    static String PREF_MAX_FAILED_PW = "max_failed_pw";
 
    void showToast(Context context, CharSequence msg) {
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
    }
 
    @Override
    public void onEnabled(Context context, Intent intent) {
        showToast(context, "Sample Device Admin: enabled");
    }
 
    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
        return "This is an optional message to warn the user about disabling.";
    }
 
    @Override
    public void onDisabled(Context context, Intent intent) {
        showToast(context, "Sample Device Admin: disabled");
    }
 
    @Override
    public void onPasswordChanged(Context context, Intent intent) {
        showToast(context, "Sample Device Admin: pw changed");
    }
 
    @Override
    public void onPasswordFailed(Context context, Intent intent) {
        showToast(context, "Sample Device Admin: pw failed");
    }
 
    @Override
    public void onPasswordSucceeded(Context context, Intent intent) {
        showToast(context, "Sample Device Admin: pw succeeded");
    }
 
}

LockScreenActivity:


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package com.example.lockscreentest;
 
import android.app.Activity;
import android.app.ActivityManager;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
 
public class LockScreenActivity extends Activity implements View.OnClickListener {
 
    private Button lock;
    private Button disable;
    private Button enable;
    static final int RESULT_ENABLE = 1;
 
    DevicePolicyManager deviceManger;
    ActivityManager activityManager;
    ComponentName compName;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        deviceManger = (DevicePolicyManager)getSystemService(
                Context.DEVICE_POLICY_SERVICE);
        activityManager = (ActivityManager)getSystemService(
                Context.ACTIVITY_SERVICE);
        compName = new ComponentName(this, MyAdmin.class);
 
        //setContentView(R.layout.main);
 
        lock =(Button)findViewById(R.id.lock);
        lock.setOnClickListener(this);
 
        disable = (Button)findViewById(R.id.btnDisable);
        enable =(Button)findViewById(R.id.btnEnable);
        disable.setOnClickListener(this);
        enable.setOnClickListener(this);
 
    }
 
    @Override
    public void onClick(View v) {
 
        if(v == lock){
            boolean active = deviceManger.isAdminActive(compName);
            if (active) {
                deviceManger.lockNow();
            }
        }
 
        if(v == enable){
            Intent intent = new Intent(DevicePolicyManager
                    .ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
                    compName);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                    "Additional text explaining why this needs to be added.");
            startActivityForResult(intent, RESULT_ENABLE);
            Log.d("123", "zxc"); // 
        }
 
        if(v == disable){
            deviceManger.removeActiveAdmin(compName);
            updateButtonStates();
        }
    }
 
    private void updateButtonStates() {
 
        boolean active = deviceManger.isAdminActive(compName);
        if (active) {
            enable.setEnabled(false);
            disable.setEnabled(true);
 
        } else {
            enable.setEnabled(true);
            disable.setEnabled(false);
        }
    }
 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case RESULT_ENABLE:
                if (resultCode == Activity.RESULT_OK) {
                    Log.i("DeviceAdminSample", "Admin enabled!");
                } else {
                    Log.i("DeviceAdminSample", "Admin enable FAILED!");
                }
                return;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2016, 13:55
Ответы с готовыми решениями:

Получение администраторских прав
Добрый день, не силен в администрировании поэтому обращаюсь с таким вопросом: администратор дал права администратора на мою учетную запись,...

Настройка администраторских прав
Вообщем на компе единственный пользователь с админскими правами. Однако, все программы запускаются как пользователи, и приходиться их...

ошибка: Bad Request (Invalid Hostname)
Переустановил денвер. Перехожу на http://localhost/index.php и вижу сее великолепие Bad Request (Invalid Hostname) апач выдает ошибки...

1
 Аватар для HanDi
898 / 345 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
11.02.2016, 01:58  [ТС]
Актуально, проблему так и не решил.

В примерах нашел еще один класс:
E:\android-sdk\samples\android-17\ApiDemos\src\com\example\android\apis \app

DeviceAdminSample, правда, разобраться не смог.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2016, 01:58
Помогаю со студенческими работами здесь

Обход\добавление администраторских прав
Приветствую всех, есть сервер с ОС windows server 2003 r2 sp2. Есть доступ по локальной сети к разным пользователям, но все лишь обычные...

BDS 2006 + Win 8 - дать доступ на запуск без администраторских прав
Здравствуйте! У меня на вин8 несколько пользователей. Установил я Borland Developer Studio 2006 под админом. Когда пытаюсь открыть бдс под...

Invalid device signature
Привет Всем! После нескольких перезаписей AtMiko8 при чтении МК avrdude начал давать сообщения: avrdude:Device syknature = 0xffffff ...

Invalid device signature
Всем привет, подскажите, вот это лечится? # avrdude -p m328p -c ftbb -F -B 4800 -t avrdude: BytBang OK avrdude: pin assykn...

Request.Response ошибка 400 bad request
Добрый день! Прошу помочь с обработкой запросов в Python 2.7.11 Принимать реквест и сохранить на сервере файл из него уже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru