2

我正在尝试在我的班级中获取 Android 的设备 ID,并且一个函数将使用它。当我尝试像下面这样使用时,它显示“getContentResolver() 方法未定义”如何解决它你知道吗?

更新:

public class DatabaseHandler extends SQLiteOpenHelper {
    // db version
    private static final int DATABASE_VERSION = 1;
    // db name
    private static final String DATABASE_NAME = Secure.getString(getContentResolver(), Secure.ANDROID_ID);


    // constructor
    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

}
4

1 回答 1

3

您需要使用正确的上下文,如下所示:

Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);

但是,在使用 ANDROID_ID 之前,您可能需要对其进行一些搜索,因为它存在问题,而且并不总是唯一的、一致的甚至是定义的。

为了访问getApplicationContext(),您需要一个Context. 修复你的类声明:

public class MyClass {
    private Context ctx;

    public MyClass( Context ctx ) {
        super();
        this.ctx = ctx;
    }

    public String getID() {
        return Secure.getString( this.ctx.getContentResolver(), Secure.ANDROID_ID);
    }

    ....
}

然后,当您在活动中实例化您的类时,请执行以下操作:

MyClass idClass = new MyClass( this );

另一个注意事项——类名应该以大写字符开头。

于 2012-11-25T20:32:25.820 回答