コンテキストなしでAndroidのシステム設定を取得する
-
08-07-2019 - |
質問
Androidユーティリティクラスでは、クラスのシステム設定値を取得したいのですが、それを呼び出すクラスにもコンテキストがないため、そこにはコンテキストがありません。リソースについては、静的な Resources.getSystem()
関数を使用できることがわかりました。コンテキストなしでシステム設定を取得する同様の方法はありますか?
私のクラスはアクティビティでもサービスでもありません。これはユーティリティクラスです。必要に応じて詳細情報を提供できます。
解決
コンテキストを送信する必要があります-責任から逃げないでください。 :)ユーティリティクラスは、何らかのレベルでアクティビティまたはサービスによって呼び出される必要があり、すべてのメソッド呼び出しを通じて、そのコンテキストを最後まで渡す必要があります。私はそれが迷惑だと知っています、私は自分で同じようなことをしなければなりませんでした。コードをシンプルに保ち、何かを達成するために必要なメソッド呼び出しをできるだけ少なくすることがインセンティブであると考えてください。
他のヒント
次のハックを使用します: http://www.hasemanonmobile.com/2009/10/05/quick-and-very-dirty-android-development-trick/
本質的に、アクティビティ内の静的変数としてコンテキストポインターを隠します。締め切りが厳しい場合にのみ、このいハックをお勧めします。
さらに、ユーティリティクラスを作成する場合、おそらく(多くのAndroidユーティリティが必要とするように)呼び出し側アプリケーションがコンストラクタの一部としてコンテキストを提供することを要求する必要があります。
コンテキストを作成できます:
Context myContext = createPackageContext("com.example", 0);