I am new to android and stuck at one point with my new screen off test application. I am trying to develop an Android application to turn off or lock the screen directly by clicking the app launcher icon of the application.
I am able to lock the screen with the functionality I want but with one problem. While i click on the screen lock icon in the launcher it takes around a second and then locks the screen (Time is taken by to MainActivity to launch).
I want that time delay to be removed and just wanted to process the command to lock phone when user tap on the app icon in the launcher. But am not able to figure it out.
Here is AndroidManifest.xml
<application
android:theme="@android:style/Theme.NoDisplay"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:allowBackup="true">
<activity android:name=".MainActivity"
android:excludeFromRecents="true"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="ScreenOffAdminReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/permissions" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
</application>
MainActivity.java
public class MainActivity extends Activity {
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
DevicePolicyManager deviceManger = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName compName = new ComponentName(this, ScreenOffAdminReceiver.class);
if (deviceManger.isAdminActive(compName)) {
deviceManger.lockNow();
finish();
} else {
Intent intent = new Intent("android.app.action.ADD_DEVICE_ADMIN");
intent.putExtra("android.app.extra.DEVICE_ADMIN", compName);
intent.putExtra("android.app.extra.ADD_EXPLANATION", getString(R.string.devicePolicyManagerMsg));
startActivityForResult(intent, 0);
}
Process.killProcess(Process.myPid());
}
}
ScreenOffAdminReceiver.java
public class ScreenOffAdminReceiver extends DeviceAdminReceiver {
public void onDisabled(Context context, Intent intent) {
Toast.makeText(context, R.string.deviceAdminDisabled, Toast.LENGTH_SHORT).show();
}
public void onEnabled(Context context, Intent intent) {
Toast.makeText(context, R.string.deviceAdminEnabled, Toast.LENGTH_SHORT).show();
}
}
permissions.xml
<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<force-lock />
</uses-policies>
</device-admin>
I just want to remove the DELAY while locking the screen. Any help will be highly appreciated. Thanks
I think you should use Application Class
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
/*
you should code here */
}
}
You can try decrease time of app launch (create activity) with change theme settings:
Try use in your app style:
<item name="android:windowDisablePreview">true</item>
<item name="android:windowContentOverlay">@null</item>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With