【问题标题】:Dialog for "Enable Device Admin" not showing when Starting Activity启动活动时未显示“启用设备管理员”对话框
【发布时间】:2015-12-09 09:23:31
【问题描述】:

我遇到了一个非常令人困惑的问题。

我有一个应注册为设备管理员的应用。我遵循了几个在线教程,解释了如何实现这一点。当我使用 Eclipse 时它工作得很好,但是自从我在安装应用程序时切换到 Android Studio 后,在运行我的应用程序时,我没有得到预期的“启用设备管理”对话框。如果我在电话设置中查看电话管理员,它将显示我的应用程序,但不会以管理员身份进行检查。以下是适用的代码部分。任何见解都会很棒!

androidmanifest.xml

    <receiver android:name="com.foo.receivers.AdminReceiver"
              android:permission="android.permission.BIND_DEVICE_ADMIN">
        <meta-data android:name="android.app.device_admin"
            android:resource="@xml/my_admin"/>
        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
        </intent-filter>
    </receiver>

我的接收类:

    public class AdminReceiver extends DeviceAdminReceiver
    {   
        @Override  
        public void onEnabled(Context context, Intent intent) {  
        //Some Code Here
        }

        @Override  
        public CharSequence onDisableRequested(Context context, Intent intent) 
        {
            //Some Code Here
        }  

        @Override  
        public void onDisabled(Context context, Intent intent) 
        {  
        }   

        @Override  
        public void onPasswordChanged(Context context, Intent intent) 
        {  
             //Some Code here    
        }  

         @Override  
        public void onPasswordFailed(Context context, Intent intent) 
        {  
             //Some Code Here
        }   

        @Override  
        public void onPasswordSucceeded(Context context, Intent intent) 
        {  
             //Some Code Here
        }     
    }

我的班级实际上启用了设备管理:

    public class DeviceManager
    {
        private DevicePolicyManager deviceManger;  
        private ActivityManager activityManager;  
        private ComponentName compName;

        public DeviceManager(Context context)
        {
            deviceManger =  DevicePolicyManager)context.getSystemService(Context.DEVICE_POLICY_SERVICE);
            activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);  
            compName = new ComponentName(context, MyAdmin.class);
        }    

        public void registerAdmin(Activity activity)
        {
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,compName);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Administrative Rights need to be granted to DriveLock to enable phone locking.");
            activity.startActivityForResult(intent,0);

        }
    }

类的示例调用:

    DeviceManager manager = new DeviceManager(context);
    manager.registerAdmin(myActivity);

我真的很困惑为什么我没有看到“设备管理”对话框。 5美元给解决它的人!哈哈。提前致谢。

【问题讨论】:

    标签: java android device-admin


    【解决方案1】:

    好吧,看来我可以保留我的五美元了 :)。从 Eclipse 迁移到 Android Studio 时,我进行了轻微的重构/重组。作为其中的一部分,我最终得到了两个名为 MyAdmin.java 的类(每个都在不同的包中)。 MyAdmin 类是扩展 DeviceAdminReceiver 的类。有两个是导致问题的原因。一旦我删除了其中一个重复的类,一切都开始按预期工作。

    【讨论】:

      猜你喜欢
      • 2015-07-19
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      相关资源
      最近更新 更多