Android getContentResolver()未定义用于获取AndroidID

时间:2012-11-25 20:27:09

标签: java android

我正在尝试在我的班级中获取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);
    }

}

1 个答案:

答案 0 :(得分: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 );

另一个注意事项 - 类名称应以大写字母开头。