반응형

meta-data

설명

  • 안드로이드 내부 데이터 중 디컴파일시 노출되면 안될 데이터를 관리하는 방법
  • meta-data에 하드코딩으로 데이터 설정시에 디컴파일시 노출될 위험이 있어 string 리소스로 사용하면 노출 위험을 줄일 수 있다
  • meta-data는 application, activity, service에 포함하여 사용할 수 있다.

코드

res/values/strings.xml
<resources>
    <string name="app_name">android-example</string>
    <string name="secret_key">ABCDEFG123456!@#$%^</string>
</resources>
AndroidManifest.xml
<application>
    ...
    <meta-data android:name="secret_key" android:value="@string/secret_key"/>
</application>
MainActivity
class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater).apply {
            setContentView(root)
            lifecycleOwner = this@MainActivity
        }
    }

    fun onClickShow(view: View) {
        val applicationInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
        val metaData = applicationInfo.metaData
        val secretKey = metaData.getString("secret_key")

        Toast.makeText(this, secretKey, Toast.LENGTH_SHORT).show()
    }
}

참고

반응형

'Development > Android' 카테고리의 다른 글

[Android] LifecycleObserver  (0) 2021.02.10
[Android] BuildConfig  (0) 2021.02.09
[Android] Kotpref  (0) 2021.02.09
[Android] SharedPreferences  (0) 2021.02.09
[Android] Build APK  (0) 2021.02.09

+ Recent posts