TelephonyManager.requestNetworkScan - Android P 预览
TelephonyManager.requestNetworkScan - Android P Preview
有人试过这个API吗?
我正在开发一个特权系统应用程序来扫描网络。
出于某种原因,当我尝试使用它时出现错误 2 'Wrong parameters'。
授予应用程序MODIFY_PHONE_STATE权限,仍然报错
这是摘录:
public class ScannerActivity extends Activity implements View.OnClickListener {
private final int PHONE_STATE_REQUEST = 1;
private Button scanButton;
private TextView resultsTextView;
private class RadioCallback extends TelephonyScanManager.NetworkScanCallback {
private List<CellInfo> mCellInfoResults;
private int mScanError;
@Override
public void onResults(List<CellInfo> cellInfoResults) {
mCellInfoResults = cellInfoResults;
ScannerActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
for (CellInfo cellInfo:mCellInfoResults) {
resultsTextView.append(" " + cellInfo.toString() + " ");
}
}
});
}
@Override
public void onError(int error) {
mScanError = error;
ScannerActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
resultsTextView.append(" Error: " + mScanError);
}
});
}
@Override
public void onComplete() {
ScannerActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
resultsTextView.append(" Scan Completed! ");
}
});
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scanner);
scanButton = (Button) findViewById(R.id.scan_button);
scanButton.setOnClickListener(this);
resultsTextView = (TextView) findViewById(R.id.results_text_view);
}
public void onClick(View view) {
NetworkScanRequest networkScanRequest;
RadioAccessSpecifier radioAccessSpecifiers[];
int bands[];
ArrayList<String> PLMNIds = new ArrayList<String>(Arrays.asList("42501"));
TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext()
.getSystemService(Context.TELEPHONY_SERVICE);
bands[0] = AccessNetworkConstants.UtranBand.BAND_1;
radioAccessSpecifiers = new RadioAccessSpecifier[1];
radioAccessSpecifiers[0] = new RadioAccessSpecifier(
AccessNetworkConstants.AccessNetworkType.UTRAN,
bands,
null);
networkScanRequest = new NetworkScanRequest(
NetworkScanRequest.SCAN_TYPE_ONE_SHOT,
radioAccessSpecifiers,
0,
60,
false,
0,
PLMNIds);
telephonyManager.requestNetworkScan(networkScanRequest, AsyncTask.SERIAL_EXECUTOR,new RadioCallback());
}
}
有谁知道我传错了什么参数吗?
我首先认为这可能是 LTE / 3G 问题,但我对 UTRAN 和 EUTRAN 得到了相同的结果。
我还排除了 SIM 卡问题 - 同样的错误发生在 2 个不同的 SIMS 上,例如都成功扫描了网络表单设置应用程序。
好的,明白了 - 对于可能遇到此问题的任何人 -
searchPeriodicity 和 incrementalResultsPeriodicity 不能为 0,尽管有文档,
这些参数与一次扫描无关。
有人试过这个API吗? 我正在开发一个特权系统应用程序来扫描网络。 出于某种原因,当我尝试使用它时出现错误 2 'Wrong parameters'。 授予应用程序MODIFY_PHONE_STATE权限,仍然报错 这是摘录:
public class ScannerActivity extends Activity implements View.OnClickListener {
private final int PHONE_STATE_REQUEST = 1;
private Button scanButton;
private TextView resultsTextView;
private class RadioCallback extends TelephonyScanManager.NetworkScanCallback {
private List<CellInfo> mCellInfoResults;
private int mScanError;
@Override
public void onResults(List<CellInfo> cellInfoResults) {
mCellInfoResults = cellInfoResults;
ScannerActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
for (CellInfo cellInfo:mCellInfoResults) {
resultsTextView.append(" " + cellInfo.toString() + " ");
}
}
});
}
@Override
public void onError(int error) {
mScanError = error;
ScannerActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
resultsTextView.append(" Error: " + mScanError);
}
});
}
@Override
public void onComplete() {
ScannerActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
resultsTextView.append(" Scan Completed! ");
}
});
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scanner);
scanButton = (Button) findViewById(R.id.scan_button);
scanButton.setOnClickListener(this);
resultsTextView = (TextView) findViewById(R.id.results_text_view);
}
public void onClick(View view) {
NetworkScanRequest networkScanRequest;
RadioAccessSpecifier radioAccessSpecifiers[];
int bands[];
ArrayList<String> PLMNIds = new ArrayList<String>(Arrays.asList("42501"));
TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext()
.getSystemService(Context.TELEPHONY_SERVICE);
bands[0] = AccessNetworkConstants.UtranBand.BAND_1;
radioAccessSpecifiers = new RadioAccessSpecifier[1];
radioAccessSpecifiers[0] = new RadioAccessSpecifier(
AccessNetworkConstants.AccessNetworkType.UTRAN,
bands,
null);
networkScanRequest = new NetworkScanRequest(
NetworkScanRequest.SCAN_TYPE_ONE_SHOT,
radioAccessSpecifiers,
0,
60,
false,
0,
PLMNIds);
telephonyManager.requestNetworkScan(networkScanRequest, AsyncTask.SERIAL_EXECUTOR,new RadioCallback());
}
}
有谁知道我传错了什么参数吗? 我首先认为这可能是 LTE / 3G 问题,但我对 UTRAN 和 EUTRAN 得到了相同的结果。
我还排除了 SIM 卡问题 - 同样的错误发生在 2 个不同的 SIMS 上,例如都成功扫描了网络表单设置应用程序。
好的,明白了 - 对于可能遇到此问题的任何人 -
searchPeriodicity 和 incrementalResultsPeriodicity 不能为 0,尽管有文档, 这些参数与一次扫描无关。