我正在开发一个图书馆,让我们说这个图书馆依赖谷歌地图作为例子。
当Android应用中有人使用它时,我想确保在他的清单中,他在应用标记中声明了以下标记:
<uses-library android:name="com.google.android.maps" android:required="true" />
我正在寻找一种阅读清单的方法,这样我就可以显示一个Toast或一个日志,上面写着&#34;嘿,伙计,你忘了包含&#34; uses-library&#34 ;在你的清单中!请更正,或者不要问我问题,我不会支持你&#34; (基本上)
到目前为止,我找到了阅读大量内容(权限等)的方法,但没有关于use-library标签的内容。
(这是一个例子,我实际上并没有使用地图v1)
答案 0 :(得分:1)
我正在编写一个仪器测试,我想检查一个特定的库是否已经不再使用了。巧合的是,它是&#34; com.google.android.maps&#34;。
Google的官方文件声明
要检查库,可以使用反射来确定特定类是否可用。
但还有另一种阅读方法&#34; uses-library&#34;太。必须考虑以下事项:
以下代码适用于我:
#include <functional>
#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>
class RangeSwitch {
public:
void method(std::string key, int &result) {
static const std::unordered_map<std::string,std::function<void(int&)>> m{
{"one", [](int& result){ result = 1; }},
{"two", [](int& result){ result = 2; }},
{"three", [](int& result){ result = 3; }},
};
static const auto end = m.end();
auto it = m.find(key);
if (it != end) {
it->second(result);
} else {
result = -1;
}
}
};
int main() {
RangeSwitch rangeSwitch;
int result;
std::vector<std::string> strings{"one", "two", "three", "foobar"};
for (const auto& s : strings) {
rangeSwitch.method(s, result);
std::cout << s << " " << result << std::endl;
}
}