我正在研究一個圖像庫應用程序,其中應用程序正在從互聯網上檢索圖像。要求用戶連接到互聯網或退出應用程序(android)
所以我想提示一個對話框要求用戶連接到互聯網或退出應用程序。
向用戶顯示WiFi和運營商網絡選項。
我正在研究一個圖像庫應用程序,其中應用程序正在從互聯網上檢索圖像。要求用戶連接到互聯網或退出應用程序(android)
所以我想提示一個對話框要求用戶連接到互聯網或退出應用程序。
向用戶顯示WiFi和運營商網絡選項。
這個檢查wifi和移動數據..運行在飛濺或你的主要活動檢查網絡connection.popup對話框,如果網絡沒有連接,並完成活動。就是這麼簡單
private boolean haveNetworkConnection() {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
haveConnectedWifi = true;
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
haveConnectedMobile = true;
}
return haveConnectedWifi || haveConnectedMobile;
}
如果我想檢查每個片段(換句話說,在每個UI頁面)的互聯網連接怎麼辦。首先讓我點擊圖片,然後看到大圖,但現在如果互聯網連接丟失,我應該通知用戶。在哪裏放置此代碼,以便在所有屏幕上檢查互聯網連接? – user3705478 2016-10-07 07:42:41
創建一個常用的util類並從那裏訪問它。您還可以創建一個廣播並隨時隨地收聽網絡更改。 – 2016-10-07 08:45:04
首先,你應該檢查自己是否已連接或沒有(噸例子如何做到這一點在線)
如果沒有,則使用此代碼爲兩個
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Connect to wifi or quit")
.setCancelable(false)
.setPositiveButton("Connect to WIFI", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
}
})
.setNegativeButton("Quit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
this.finish();
}
});
AlertDialog alert = builder.create();
alert.show();
//Checking For Internet Connection
ConnectionDetector cd = new ConnectionDetector(getApplicationContext());
// Check if Internet present
if (!cd.isConnectingToInternet()) {
// Internet Connection is not present
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Connect to wifi or quit")
.setCancelable(false)
.setPositiveButton("Connect to WIFI", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
}
})
.setNegativeButton("Quit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
this.finish();
}
});
AlertDialog alert = builder.create();
alert.show();
return;
}
我們應該結合我們的答案大聲笑 – MobileMon 2014-09-05 12:27:37
我一直在想....大聲笑.. – 2014-09-05 12:28:42
試試這個:
public static boolean isConnected(Context context){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobileInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if ((wifiInfo != null && wifiInfo.isConnected()) || (mobileInfo != null && mobileInfo.isConnected())) {
return true;
}else{
showDialog();
return false;
}
private void showDialog()
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Connect to wifi or quit")
.setCancelable(false)
.setPositiveButton("Connect to WIFI", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
}
})
.setNegativeButton("Quit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
this.finish();
}
});
AlertDialog alert = builder.create();
alert.show();
}
這是它做的方式。
此類檢查有效的互聯網連接:
public class ConnectionStatus {
private Context _context;
public ConnectionStatus(Context context) {
this._context = context;
}
public boolean isConnectionAvailable() {
ConnectivityManager connectivity = (ConnectivityManager) _context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
return false;
}
}
下面的方法打開了Wi-Fi面板,如果沒有有效的互聯網連接:
public void addListenerOnWifiButton() {
Button btnWifi = (Button)findViewById(R.id.btnWifi);
iia = new ConnectionStatus(getApplicationContext());
isConnected = iia.isConnectionAvailable();
if (!isConnected) {
btnWifi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
Toast.makeText(getBaseContext(), "Please connect to a hotspot",
Toast.LENGTH_SHORT).show();
}
});
}
else {
btnWifi.setVisibility(4);
warning.setText("This app may use your mobile data to update events and get their details.");
}
}
下面的方法打開3G面板,如果沒有有效的互聯網連接:
public void addListenerOn3GButton() {
Button btnThreeGee = (Button)findViewById(R.id.btn3G);
iia = new ConnectionStatus(getApplicationContext());
isConnected = iia.isConnectionAvailable();
if (!isConnected) {
btnThreeGee.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS));
Toast.makeText(getBaseContext(), "Please check 'Data enabled' option",
Toast.LENGTH_SHORT).show();
}
});
}
else {
btnThreeGee.setVisibility(4);
cont.setVisibility(View.VISIBLE);
warning.setText("This app may use your mobile data to update events and get their details.");
}
}
希望這有助於:)
嘿,你有沒有想過如何打開數據漫遊設置提示,對話框類型啓用/禁用類似於藍牙/ GPS提示?您的答案正常工作,但它會打開一個新的活動,而不是一個損害用戶體驗的小對話框。 – Razgriz 2016-04-27 13:07:22
我認爲[this](http://stackoverflow.com/a/15456565/1116216)答案將幫助你實現你所需要的。 – 2016-04-27 13:37:08
我的意思是會出現一個對話框,點擊確定/是/等會自動打開移動數據。與提示如何使用對話框打開藍牙相似,如果單擊是,藍牙將自動開啓。或者如何打開谷歌地圖顯示「允許此應用使用您的位置?」並點擊是將啓用您的位置設置。不是點擊是,並顯示一個新的活動。 – Razgriz 2016-04-27 13:49:05
儘可能簡單,只需檢查是否有活動的網絡連接。如果不是,則顯示yes | no對話框。如果是肯定的,則顯示網絡設置。否則,完成活動。 – 2014-09-05 12:21:53