没有收到电话时关闭小区无线电

时间:2018-01-16 11:43:24

标签: java android

我正在尝试检测当前是否正在接听任何电话或手机正在响铃。如果没有,电池收音机应该关闭。因为我第一次使用电话管理器。我无法纠正错误。 错误是“无法解析”setRadioPower(?)'。

我的MainActivity.java是:

public class MainActivity extends AppCompatActivity {
    private TelephonyManager tm;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TelephonyManager telephonyManager =
                (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

        PhoneStateListener callStateListener = new PhoneStateListener() {
            public void onCallStateChanged(int state, String incomingNumber)
            {
                if(state==TelephonyManager.CALL_STATE_RINGING){
                    Toast.makeText(getApplicationContext(),"Phone Is Ringing",
                            Toast.LENGTH_LONG).show();
                }
                if(state==TelephonyManager.CALL_STATE_OFFHOOK){
                    Toast.makeText(getApplicationContext(),"Phone is Currently in A call",
                            Toast.LENGTH_LONG).show();
                }

                if(state==TelephonyManager.CALL_STATE_IDLE){
                     tm.setRadioPower(disabled);
                }
            }
        };
        telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

    }

}

我的AndroidManifest.xml是:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.vk9621.radiocall">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>

我的进口商品是:

import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

有人能告诉我如何纠正这个错误吗?

1 个答案:

答案 0 :(得分:0)

在开发人员文档中找不到它的原因是它是隐藏的。 但是,您始终可以在Android源代码中找到隐藏的方法。

代码参考:public boolean setRadioPower(boolean turnOn){}

如果您的手机未植根,或者您没有系统权限android.Manifest.permission.MODIFY_PHONE_STATE,则将无法访问此API。

但是,如果您确实具有这些权限,则可以使用以下代码轻松实现此目的:

    ITelephony iTelephony = ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));
    try {
        iTelephony.setRadioPower(true);
    } catch (RemoteException e) {
        e.printStackTrace();
    }