2012-10-25 46 views
17

我正在開發一個安全應用程序,如果用戶撥打的電話號碼不是經常呼叫而且以前從未呼叫過的電話號碼,則用戶必須重新進行身份驗證。爲此,我想在檢查電話號碼後鎖定電話。用戶撥打電話號碼後鎖定Android手機

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); 
    } 
} 

在這種新的活動lockActivity,我需要鎖在那裏我有評論// LOCK PHONE

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 
} 
} 

手機是沒有得到鎖定,我已經試過的方法的電話。這些措施包括以下內容:

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清單文件具有以下權限

<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" /> 

爲什麼我不能夠鎖定手機?任何指針? 非常感謝您的幫助。欣賞它!

+1

http://stackoverflow.com/questions/3820307/how-to-terminate-a-call-programmatically -under-android - 有人表示無法終止進程調用。真的嗎 ?這可能是我無法鎖定設備或至少終止通話的原因嗎? – user1773209

+0

我們可以使用** setResultData(null)**終止撥打的電話。 –

+1

這是'不要叫你前醉'有點應用程序? :D – Shark

回答

2

嘗試創建一個DevicePolicyManager

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

,然後調用:

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

Teknogenie - 在我的情況下,這個工作有點......當我撥打電話,然後屏幕變黑,屏幕似乎已被鎖定,但我看不到鎖定的屏幕解鎖..當我點擊我的手機上的鎖定按鈕,然後解鎖並繼續撥打電話。仍然在調試......但非常感謝您的幫助,讓我走得更遠!謝謝!! – user1773209

+0

我剛剛發現所發生的事情是,通話仍在進行中,但通話結束後手機會被鎖定。所以它的工作原理,我只需要將代碼放置在正確的地方來中斷通話並結束通話。 – user1773209

相關問題