Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
HanDi
890 / 337 / 8
Регистрация: 11.02.2012
Сообщений: 1,502
#1

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

09.02.2016, 13:55. Просмотров 340. Ответов 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);
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2016, 13:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка администраторских прав: Request to add invalid device admin (Программирование Android):

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

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

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

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

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

HTTP Error 400. The request hostname is invalid - nginx
Всем привет! Если запускать html файлы то все нормально, но если php то: Bad Request - Invalid Hostname HTTP Error 400. The...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
HanDi
890 / 337 / 8
Регистрация: 11.02.2012
Сообщений: 1,502
11.02.2016, 01:58  [ТС] #2
Актуально, проблему так и не решил.

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

DeviceAdminSample, правда, разобраться не смог.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2016, 01:58
Привет! Вот еще темы с ответами:

Код ошибки vk.api: 8 Invalid request для серверного метода - PHP
Привет Скрипт для отправки уведомлений вконтакте Ошибка:&quot;error_code&quot;:8,&quot;error_msg&quot;:&quot;Invalid request: same query repeated too...

Ошибка создания Device в DirectSound. Не видит namespace Device - DirectX
хочу в примитивной игрушке (сделанной не на Direct3D) добавить звуковое оформление через DirectSound. 1. Скачал и установил DirectX...

Что означает ошибка device missing or unknow device (-24)? - Микроконтроллеры
Пытаюсь хотя бы считать данные с микроконтроллера через PonyProg. Выдает ошибку. Вроде все работает. Программатор UsBasp 2.0 + две...

Set failed on device wlan0 invalid argument - Linux
всем привет Я на днях решил вай-фай подключить к ноуту. Ну вот начал : ifconfig wlan0 up Все норм . Интерфейс встал . Iwlist...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru