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 に答える