2013-01-15 61 views
1

我要鎖定按鈕的應用程序的屏幕上單擊麻煩與鎖定

我寫的代碼爲

public class MainActivity extends DeviceAdminReceiver{ 


public void makeTest() 
{ 
    System.out.println("Entered Main Class"); 
} 
public class Controller extends Activity { 

static final int RESULT_ENABLE = 1; 
Button powerOff; 
int amountOfTime =20*1000; 
Context context = this; 
DevicePolicyManager mDPM; 
ActivityManager mAM; 
ComponentName mDeviceAdminSample; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    System.out.println("Enterd inner Class"); 
    mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
    mAM = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 
    mDeviceAdminSample = new ComponentName(Controller.this,MainActivity.class); 


    powerOff = (Button)findViewById(R.id.button1); 
    powerOff.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
       System.out.println("Entered Button Click"); 
       mDPM.lockNow(); 


       Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
       intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, 
         mDeviceAdminSample); 
       intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, 
         "Additional text explaining why this needs to be added."); 
       startActivityForResult(intent, RESULT_ENABLE); 


     } 
    }); 


} 

這顯示某些錯誤的logcat的輸出

01-15 15:51:12.043: E/AndroidRuntime(8148): FATAL EXCEPTION: main 
01-15 15:51:12.043: E/AndroidRuntime(8148): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.screenlock/com.example.screenlock.MainActivity}: java.lang.ClassCastException: com.example.screenlock.MainActivity cannot be cast to android.app.Activity 
01-15 15:51:12.043: E/AndroidRuntime(8148): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2240) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at android.app.ActivityThread.access$600(ActivityThread.java:139) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at android.os.Looper.loop(Looper.java:156) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at android.app.ActivityThread.main(ActivityThread.java:4987) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at java.lang.reflect.Method.invokeNative(Native Method) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at java.lang.reflect.Method.invoke(Method.java:511) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at dalvik.system.NativeStart.main(Native Method) 
01-15 15:51:12.043: E/AndroidRuntime(8148): Caused by: java.lang.ClassCastException: com.example.screenlock.MainActivity cannot be cast to android.app.Activity 
01-15 15:51:12.043: E/AndroidRuntime(8148): at android.app.Instrumentation.newActivity(Instrumentation.java:1039) 
01-15 15:51:12.043: E/AndroidRuntime(8148): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112) 
01-15 15:51:12.043: E/AndroidRuntime(8148): ... 11 more 
+0

問題出在您的日誌中:引起:java.lang.ClassCastException:com.example.screenlock.MainActivity無法轉換爲android.app.Activity – RvdK

+0

我該如何解決它 – Geethu

+1

查看Oren的回答 – RvdK

回答

1

DeviceAdminReceiver延伸Activity?如果不是日誌表明這是你的問題。

編輯:可以看到hereDeviceAdminReceiver是一個BroadcastReciever它不是Activity。您的MainActivity類必須擴展ActivityActivity的子類,以便系統可以運行它。

+0

yes it extend deviceAdminReciever – Geethu

+1

DeviceAdminReceiver不是'Activity',而是'BroadcastReciever',可以在[這裏]看到(http://developer.android.com/reference/android/app/admin/DeviceAdminReceiver.html)。你的MainActivity不會擴展Activity,所以不能運行。 – Oren

+0

@abcd見編輯答案。擴展'Activity'而不是'DeviceAdminReceiver',你就會被設置。 – Oren