2015-09-13 73 views
1

我遇到了一個相當混亂的問題。開始活動時未顯示「啓用設備管理員」的對話框

我有一個應該註冊爲設備管理員的應用程序。我已經跟隨了幾個在線的教程來解釋如何實現這一點。當我使用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); 

我真的很困惑,爲什麼我沒有看到設備管理對話框。五美元解決它!哈哈。提前致謝。

回答

0

確定它看起來像我得到我的五美元:)。從Eclipse遷移到Android Studio時,我做了輕微的重構/重組。作爲這個的一部分,我結束了兩個名爲MyAdmin.java的類(每個類都在不同的包中)。 MyAdmin類是擴展DeviceAdminReceiver的類。有兩個是造成這個問題的原因。一旦我刪除了一個重複的類,一切都開始按預期工作。

Packages