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

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

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

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

09.02.2016, 13:55. Просмотров 279. Ответов 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 Как запустить android virtual device?
Android usb-device android
Android ArrayAdapter вылет на clear и add
Android Device disconnected и Task как можнео исправить
Ошибка Genymotion. For an unknown reason, VirtualBox DHCP has not assigned an IP address to virtual device Android
При создании virtual device выдает ошибку Android
Android Andoid + USB HID device EndPoint 0
Android Genymotion: unable to set OpenGL hardware acceleration for the virtual device
Android Ошибка при создании проекта "invalid LOC header (bad signature)"
Android Request и Response в Java
Device emulator - ПОДКЛЮЧАЙСЯ! Android
Нет функции add Volley Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HanDi
889 / 336 / 8
Регистрация: 11.02.2012
Сообщений: 1,502
11.02.2016, 01:58  [ТС]     Ошибка администраторских прав: Request to add invalid device admin #2
Актуально, проблему так и не решил.

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

DeviceAdminSample, правда, разобраться не смог.
Yandex
Объявления
11.02.2016, 01:58     Ошибка администраторских прав: Request to add invalid device admin
Ответ Создать тему
Опции темы

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