Je suis nouveau à android et coincé à un moment donné avec mon nouvel écran hors application de test. J'essaie de développer une application Android pour désactiver ou verrouiller l'écran directement en cliquant sur l'icône du lanceur d'applications de l'application.Traiter la commande sans lancer MainActivity, dans Android
Je suis capable de verrouiller l'écran avec la fonctionnalité que je veux, mais avec un problème. Pendant que je clique sur l'icône de verrouillage de l'écran dans le lanceur il faut environ une seconde, puis verrouille l'écran (le temps est pris par MainActivity pour lancer).
Je veux que la temporisation soit supprimée et je voulais juste traiter la commande pour verrouiller le téléphone lorsque l'utilisateur appuie sur l'icône de l'application dans le lanceur. Mais je ne suis pas capable de le comprendre.
est ici 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>
Je veux juste enlever le DELAY tout en verrouillant l'écran. Toute aide sera grandement appréciée. Merci
Pouvez-vous partager 'permissions.xml'? – azizbekian
Avez-vous essayé sans exécuter 'Process.killProcess (Process.myPid())'? J'ai l'impression que cela peut causer des problèmes. – azizbekian
Oui, j'ai essayé sans elle aussi, mais quand une nouvelle application s'ouvre, le processus se tue automatiquement et le même problème vient à nouveau – kanudo