2017-03-29 91 views
0

我知道AndroidManifest.xml是在編譯時準備的,而不是運行時,有沒有其他方式可以在不依賴硬編碼字符串的情況下在清單中填充元數據?也許在編譯時以某種方式填充它?如何以編程方式填充AndroidManifest元數據值?

目前我有以下我AndroidManifest.xml

<application 
    android:allowBackup="true" 
    android:icon="@drawable/dt_icon" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme"> 

    <meta-data 
     android:name="DataPath" 
     android:value="" 
    /> ... 

我不想硬編碼值,而是從結果莫名其妙地填充它:

Environment.getExternalStorageDirectory()

另一個應用稍後將通過利用ApplicationInfo的metaData屬性檢索DataPath的值。

+0

我認爲你不能在運行時更改元數據值AFAIK – Killer

+0

[從代碼更改艙單元數據]的可能的複製(http://stackoverflow.com/questions/ 3174424/changes-manifest-meta-data-from-code) – Killer

+0

@Shubham我寫的第一件事「我明白AndroidManifest.xml是在編譯時準備的,而不是運行時,」我正在尋找替代品,我相信我在某個地方讀取它可能在編譯時分配值但仍然沒有硬編碼... – Dayan

回答

1

我相信我讀的地方,它可以在編譯時價值進行轉讓,但仍然沒有硬編碼它

你能做的最好是通過manifest placeholders分配的gradle從一個值。

例子:

android { 
    defaultConfig { 
     manifestPlaceholders = [hostName:"www.example.com"] 
    } 
    ... 
} 

<intent-filter ... > 
    <data android:scheme="http" android:host="${hostName}" ... /> 
    ... 
</intent-filter> 
相關問題