[英]Android Network connection status
我正在嘗試使用BroadcastReceiver建立此網絡連接。 如果不存在連接,它將顯示一個警告對話框,告訴用戶重試連接。 我無法讓這部分工作。 它說“ The constructor AlertDialog.Builder(ConnectionDetector) is undefined
”和“ The method makeText(Context, CharSequence, int) in the type Toast is not applicable for the arguments (ConnectionDetector, String, int)
”。 我想我弄亂了我的代碼。 最后一個問題是如何做一個重試按鈕? 這里是Android的新手。 謝謝
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.widget.Toast;
/**
* This broadcast receiver is awoken after boot and registers the service that
* checks for new photos from all the known contacts.
*/
public class ConnectionDetector extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,false);
if(noConnectivity){
Toast.makeText(context, "Internet Connection Required" , Toast.LENGTH_LONG).show();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setCancelable(true);
// builder.setIcon(R.drawable.dialog_question);
builder.setTitle("Title");
builder.setInverseBackgroundForced(true);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
//System.exit(0);
//Show Warning Message
//Close Application the way i suggested
}
}
}
Logcat:應用程序崩潰
08-22 13:56:31.899: E/AndroidRuntime(29026): FATAL EXCEPTION: main
08-22 13:56:31.899: E/AndroidRuntime(29026): java.lang.RuntimeException: Unable to start receiver com.example.androidhive.ConnectionDetector: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2140)
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.app.ActivityThread.access$1500(ActivityThread.java:127)
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1211)
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.os.Handler.dispatchMessage(Handler.java:99)
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.os.Looper.loop(Looper.java:137)
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.app.ActivityThread.main(ActivityThread.java:4512)
08-22 13:56:31.899: E/AndroidRuntime(29026): at java.lang.reflect.Method.invokeNative(Native Method)
08-22 13:56:31.899: E/AndroidRuntime(29026): at java.lang.reflect.Method.invoke(Method.java:511)
08-22 13:56:31.899: E/AndroidRuntime(29026): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:982)
08-22 13:56:31.899: E/AndroidRuntime(29026): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749)
08-22 13:56:31.899: E/AndroidRuntime(29026): at dalvik.system.NativeStart.main(Native Method)
08-22 13:56:31.899: E/AndroidRuntime(29026): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.view.ViewRootImpl.setView(ViewRootImpl.java:693)
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:301)
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.app.Dialog.show(Dialog.java:278)
08-22 13:56:31.899: E/AndroidRuntime(29026): at com.example.androidhive.ConnectionDetector.onReceive(ConnectionDetector.java:52)
08-22 13:56:31.899: E/AndroidRuntime(29026): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2133)
08-22 13:56:31.899: E/AndroidRuntime(29026): ... 10 more
這是因為您嘗試傳遞錯誤的上下文
更換
AlertDialog.Builder builder = new AlertDialog.Builder(this);
通過
AlertDialog.Builder builder = new AlertDialog.Builder(context);
和
更換
Toast.makeText(this, "Internet Connection Required" , Toast.LENGTH_LONG).show();
通過
Toast.makeText(context, "Internet Connection Required" , Toast.LENGTH_LONG).show();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.