日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Android掛斷電話最新實現方法_Android

更新時間: 2022-04-24 編程語言

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

記得一定要動態添加電話權限哦!不然掛電話這個操作實現不了。

總結

原文鏈接:https://blog.csdn.net/liujibo520/article/details/122983914

欄目分類
最近更新