2012-10-25 13 views
17

Ich entwickle eine Sicherheitsanwendung, wobei, wenn ein Benutzer eine Telefonnummer wählt, die nicht häufig angerufen wird und er nie zuvor aufgerufen hat, der Benutzer sich erneut authentifizieren muss. Zu diesem Zweck möchte ich das Telefon nach Überprüfung der Telefonnummer sperren.Sperren Android Phone, nachdem der Benutzer eine Telefonnummer wählt

public class outgoingCalls extends BroadcastReceiver { 

public void onReceive(Context context, Intent intent) { 

    Log.v("onReceive", "In onReceive()"); 
    if (confidence == 0) { 
     Log.v("onReceive","confidence zeroed"); 
     Intent i = new Intent(); 
     i.setClassName("abc.xyz.SECURITY","abc.xyz.SECURITY.lockActivity"); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
    } 
} 

In dieser neuen Aktivität lockActivity, ich brauche das Telefon zu sperren, wo ich // SPERREN

public class lockActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.v("lock","lockActivity onCreate method called"); 
     // setContentView(R.layout.main); 
     Log.v("lock","locking"); 
// LOCK PHONE 
} 
} 

Das Telefon mit den Methoden immer gesperrt ist nicht Ich habe versucht, kommentiert haben. Dazu gehören die folgenden:

1. KeyguardManager mgr = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE); 
KeyguardLock lock = mgr.newKeyguardLock("edu.Boston.SECURITY.lockActivity"); 
((KeyguardLock) lock).reenableKeyguard(); 

2. PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
manager.goToSleep(100);//int amountOfTime 

3. PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Tag"); 
wl.acquire(); 
wl.release(); 

4. WindowManager.LayoutParams params = getWindow().getAttributes(); 
    params.screenBrightness = 0; 
    getWindow().setAttributes(params); 

Android-Manifest-Datei hat unter Berechtigungen

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS"/> 
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 

Warum bin ich nicht in der Lage, das Telefon zu sperren? Irgendwelche Zeiger? Vielen Dank im Voraus für Ihre Hilfe. Bin dankbar!

+1

http://stackoverflow.com/questions/3820307/how-to-terminate-a-call-programmatically -under-android - Jemand hat angegeben, dass es nicht möglich ist, laufende Anrufe zu beenden. Ist das wahr ? Könnte das der Grund sein, dass ich das Gerät nicht sperren oder den Anruf beenden kann? – user1773209

+0

können wir den gewählten Anruf mit ** setResultData (null) ** beenden. –

+1

Ist das die "nicht Ihren Ex-Betrunkenen anrufen" App? : D – Shark

Antwort

2

Versuchen Sie, eine DevicePolicyManager

http://developer.android.com/training/enterprise/device-management-policy.html

erstellen und dann rufen:

DevicePolicyManager mDPM = (DevicePolicyManager)context.getSystemService(Context.DEVICE_POLICY_SERVICE); 
mDPM.lockNow(); 
+0

Teknogenie - Das hat etwas funktioniert .. in meinem Fall, wenn ich einen Anruf mache, dann wird der Bildschirm schwarz und der Bildschirm scheint gesperrt worden zu sein, aber ich kann den gesperrten Bildschirm zum Entsperren nicht sehen .. wenn ich auf die Sperrtaste oben auf meinem Telefon klicke, wird die Sperre aufgehoben und der Anruf wird fortgesetzt. Immer noch Debuggen .. aber vielen Dank für Ihre Hilfe und mich so weit! Vielen Dank!! – user1773209

+0

Ich habe gerade festgestellt, dass der Anruf gerade gemacht wird, aber das Telefon wird gesperrt, nachdem der Anruf beendet wurde. So funktionierte es, ich muss nur möglicherweise den Code den richtigen Platz platzieren, um den Anruf zu unterbrechen und den Anruf zu beenden .. – user1773209

Verwandte Themen