不能在静态上下文中使用它

时间:2014-03-25 03:34:31

标签: java android

在编码时遇到问题。

new AlertDialog.Builder(this)

这有错误,请帮我一看。

import java.io.File;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.ActionBarActivity;

public class MainActivity extends ActionBarActivity {


        public static boolean isPhoneRooted() {

            // get from build info
            String buildTags = android.os.Build.TAGS;
            if (buildTags != null && buildTags.contains("test-keys")) {
              return true;
            }

            // check if /system/app/Superuser.apk is present
            try {
              File file = new File("/system/app/Superuser.apk");
              if (file.exists()) {

                  new AlertDialog.Builder(this)

                    .setIcon(R.drawable.ic_launcher)

                    .setTitle("[" + file.getName() + "] folder can't be read!")

                    .setPositiveButton("OK", 

                      new DialogInterface.OnClickListener() {     

                       @Override

                       public void onClick(DialogInterface dialog, int which) {

                        // TODO Auto-generated method stub

                       }

                      }).show();

              }
            } catch (Throwable e1) {
              // ignore
            }

            return false;
          }
}

2 个答案:

答案 0 :(得分:1)

下面:

public static boolean isPhoneRooted() {
  ...
  new AlertDialog.Builder(this)
  ....
}
明确不允许

由于该方法是class方法而不是instance方法,实际上并不存在(因为this是实际的实例一件事。)

这是真正的基本内容,您应该阅读它。 Here's比较两者的链接。

答案 1 :(得分:0)

public static boolean isPhoneRooted()更改为public static boolean isPhoneRooted(Context context),并使用this关键字将该代码替换为方法的context参数。并将isPhoneRooted();方法称为isPhoneRooted(this);