在没有连接或连接数低的情况下对许可检查做出“未许可”响应的尝试,我一直在尝试解决。我想检查信号强度,如果它超过50%(15)或由于没有连接而返回99,我希望它绕过检查,直到下次应用程序以更好的信号启动时。这样,任何授权用户都不会看到“未授权”响应。
问题1:使用getGsmSignalStrength()时,仅会返回phone / 3g / 4g强度或wifi强度。如果用户处于wifi模式,那么它应该也可以正常工作吗?我确实知道如何检查wifi是否已连接,因此如有需要,我可以随时使用它来检查wifi。
问题2:即使我盯着手机看,getGsmSignalStrength()始终返回值“ 99”,并且显示出足够的强度。
ConnecetivityCheck.java的全部目的是检查然后继续。现在,我只是让它自动跳过检查并显示带有getGsmSignalStrength()数字的Toast框,但这始终显示为“ 99”。
请帮助,谢谢。
下面我附上了我的代码...
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.emsprotocols.ilpaemsprotocols"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<!-- PERMISSIONS -->
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- LICENSE PERMISSIONS -->
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<!-- USES -->
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<activity android:name=".ProtocolsSplashActivity"
android:label="@string/app_name">
<intent-filter>
.Java文件
package com.emsprotocols.ilpaemsprotocols;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.widget.Toast;
public class ConnectivityCheck extends Activity {
TelephonyManager Tel;
MyPhoneStateListener MyListener;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
/* Update the listener, and start it */
MyListener = new MyPhoneStateListener();
Tel = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);
Tel.listen(MyListener ,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
startActivity(new Intent(this, ProtocolsMMenuActivity.class));
ConnectivityCheck.this.finish();
}
/* Called when the application is minimized */
@Override
protected void onPause()
{
super.onPause();
Tel.listen(MyListener, PhoneStateListener.LISTEN_NONE);
}
/* Called when the application resumes */
@Override
protected void onResume()
{
super.onResume();
Tel.listen(MyListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
/* —————————– */
/* Start the PhoneState listener */
/* —————————– */
private class MyPhoneStateListener extends PhoneStateListener
{
/* Get the Signal strength from the provider, each tiome there is an update */
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength)
{
int strengthAmplitude = signalStrength.getGsmSignalStrength();
super.onSignalStrengthsChanged(signalStrength);
Toast.makeText(getApplicationContext(), "GSM Cinr = "
+ String.valueOf(strengthAmplitude), Toast.LENGTH_SHORT).show();
}
};/* End of private Class */
}
最佳答案
问题1:应该仅是GSM信号强度。
问题2:我的代码找不到任何错误,您确定您有GSM信号吗?如果您居住在美国,则很有可能正在使用CDMA网络。还有其他获得信号强度的方法:Link
关于android - getGsmSignalStrength()始终返回“99”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10302844/