联通4g手机助手:Android电话API在4G手机上不返回 cellsignalstrength

关于联通4g手机助手的问题,在telephony api中经常遇到, 我正在尝试检索手机信号强度并在基于 4G 的手机上显示。我的手机构建是 LND-AL30 8.0.0.203 (C675)。这是否意味着我有 api 级别为 30 的 android ver 8?如果是这样,我可以使用哪个 Api 来获取信号强度?

我正在尝试检索手机信号强度并在基于 4G 的手机上显示。我的手机构建是 LND-AL30 8.0.0.203 (C675)。这是否意味着我有 api 级别为 30 的 android ver 8?如果是这样,我可以使用哪个 Api 来获取信号强度?

问题:当应用程序启动时,当位置信息被禁用时,应用程序运行正常,但检索 cellInfo 对象(tm.getAllCellInfo)的零长度。

而如果我打开我的手机上的位置信息,应用程序崩溃异常:没有虚拟方法 cellInfo.getCellSignalStrength。你能请建议如何克服这个问题,并检索细胞信号强度?

是我使用的 Android SDK 版本。

建筑坡度

android {
compileSdk 31
defaultConfig {
    applicationId "com.example.mobilenetworkinfo"
    minSdk 31
    targetSdk 31
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}

具有所需权限的 Manifest.xml 文件:

uses-permission android:name="android.permission.READ_PHONE_STATE" 
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" 
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" 
uses-permission android:name="android.permission.INTERNET" 

和 MainActivity.java 文件:

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.telephony.*;
public class MainActivity extends AppCompatActivity {
private final int REQUEST_READ_PHONE_STATE=1;
private final int REQUEST_ACCESS_COARSE_LOCATION=2;
private final int REQUEST_ACCESS_FINE_LOCATION=3;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.i("onCreate", "added hello from onCreate");
}
@SuppressLint({"NewApi", "MissingPermission"})
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public void sendMessage(View view) {
  
    int permissionCheck = ContextCompat.checkSelfPermission(this, 
     Manifest.permission.READ_PHONE_STATE);
    if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[] 
    {Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE);
     } else {
        //TODO
     }
    int permissionCheck2 = ContextCompat.checkSelfPermission(this, 
    Manifest.permission.ACCESS_COARSE_LOCATION);
    if (permissionCheck2 != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[] 
    {Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_ACCESS_COARSE_LOCATION);
    } else {
        //TODO
    }
    int permissionCheck3 = ContextCompat.checkSelfPermission(this, 
     Manifest.permission.ACCESS_FINE_LOCATION);
    if (permissionCheck3 != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[] 
    {Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_ACCESS_FINE_LOCATION);
     } else {
        //TODO
    }
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    intent.putExtra("IMEI", tm.getImei());
    intent.putExtra("SIM serial number", tm.getSimSerialNumber());
    Integer i=0;
    for( CellInfo cellInfo: tm.getAllCellInfo()) {
    //for( i =1; i <= 6;i++){
        i++;
        
 intent.putExtra("cellSignalStrength"+i.toString(),
 cellInfo.getCellSignalStrength().getDbm()+"");
    }
    intent.putExtra("CELLCOUNT", i+"");
    Log.i("First", "added hello and count is " + i.toString());
    startActivity(intent);
}
@SuppressLint({"MissingPermission", "NewApi"})
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] 
 grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode) {
        case REQUEST_READ_PHONE_STATE:
            if ((grantResults.length > 0) && (grantResults[0] == 
  PackageManager.PERMISSION_GRANTED)) {
            }
            break;
        default:
            break;
    }
 }
}
1

您正在使用 SDK 级别 18 进行编译。刚刚在 API 30 中添加了 getSignalStrength。您需要将目标 SDK 版本设置为至少 30 (并在至少 30 的设备上运行它) 才能编译。您可能也想使 minSDK 版本 30,或者您需要在调用它之前检查 API 级别。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(349)
Comfortable的比较级和最高级:试图匹配以ly结尾但不是比较/最高级形式的副词
上一篇
Ftp扫描工具:使用PHP通过FTP递归扫描目录和子目录
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(77条)