Android掛斷電話最新實現方法
1.Android 動態申請權限
首先,需要在AndroidManifest.xml靜態申請電話權限,否則無法動態申請權限,以下代碼位置不能放錯(在application之外):
<uses-permission android:name="android.permission.CALL_PHONE" />
然後,在java代碼中寫動態申請權限的邏輯(這是官網的寫法)
public void requestPower() { //判斷是否已經賦予權限 if (ContextCompat.checkSelfPermission(this, Manifest.permission.上面電話權限字符) != PackageManager.PERMISSION_GRANTED) { //如果應用之前請求過此權限但用戶拒絕瞭請求,此方法將返回 true。 if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.上面電話權限字符)) {//這裡可以寫個對話框之類的項向用戶解釋為什麼要申請權限,並在對話框的確認鍵後續再次申請權限.它在用戶選擇"不再詢問"的情況下返回false } else { //申請權限,字符串數組內是一個或多個要申請的權限,1是申請權限結果的返回參數,在onRequestPermissionsResult可以得知申請結果 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.上面電話字符,}, 1); } } }
示例圖:
2.創建一個AIDL文件ITelephony包名必須是(com.android.internal.telephony)
// ITelephony.aidl package com.android.internal.telephony; // Declare any non-default types here with import statements interface ITelephony { boolean endCall(); void answerRingingCall(); }
示例圖:
3.寫java代碼實現掛斷電話
private void endCall() { try { //通過反射得到隱藏的API,並獲得隱藏類的Class對象 Class<?> clazz = Class.forName("android.os.ServiceManager"); //獲取 Method類對象(方法對象) Method method = clazz.getMethod("getService", String.class); //調用方法獲到iBinder對象 IBinder ibinder = (IBinder) method.invoke(null, Context.TELEPHONY_SERVICE); ITelephony iTelephony = ITelephony.Stub.asInterface(ibinder); iTelephony.endCall();//結束電話 } catch (Exception e) { e.printStackTrace(); } }
記得一定要動態添加電話權限哦!不然掛電話這個操作實現不瞭。
總結
到此這篇關於Android掛斷電話最新實現方法的文章就介紹到這瞭,更多相關Android掛斷電話最新內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Android permission denied原因歸納和解決辦法
- Android11及以上文件讀寫權限申請詳細介紹
- Android權限詢問的實例詳解
- Android開發之permission動態權限獲取詳解
- Android實現獲取短信驗證碼並自動填充