我们使用三个项目代码是相同但包名称不同然后API也不同的URL,我们使用switch-case获取包名称,我们希望得到那个特定的案例URL,然后在另一个类中调用URL。你能帮我吗
public class AllChanges extends Application {
public static Context context;
public static String getPackageName() {
return context.getPackageName();
}
public String url( ) {
switch (getPackageName()){
case "com.product.packagename1":
Url = "http://google.com";
case "com.product.packagename2":
Url = "http://stackoverflow,com";
case "com.product.packagename3":
Url = "http://facebook.com";
case "com.product.packagename4":
Url = "http://bing.com";
case "com.product.packagename5":
Url = "http://gmail.google.com";
}
return Url;
}
public static String Url = url();
}
答案 0 :(得分:0)
您必须确保上下文可用并已分配。 Application类也扩展了Context,因此它有一个getPackageName()函数。
快速解决方案:
public class AllChanges extends Application {
public static String urlString;
@Override
public void onCreate() {
super.onCreate();
urlString = getUrl();
}
public String getUrl( ) {
switch (getPackageName()){
case "com.product.packagename1":
return "http://google.com";
case "com.product.packagename2":
return "http://stackoverflow,com";
case "com.product.packagename3":
return "http://facebook.com";
case "com.product.packagename4":
return "http://bing.com";
case "com.product.packagename5":
return "http://gmail.google.com";
}
return null;
}
}
<强>建议:强>
清洁工和我推荐的解决方案是使用不同的构建版本和不同的资源文件夹,这些文件夹应包含特定的URL。
答案 1 :(得分:0)
对于这个问题,使用案例似乎不是正确的解决方案。如果你想要做的是实际映射URL,那么使用地图。
import java.util.HashMap;
public class UrlMappingExample {
private static final HashMap<String,String> urlMappings = new HashMap<>();
static {
urlMappings.put("com.product.packagename1", "http://google.com");
urlMappings.put("com.product.packagename2", "http://stackoverflow,com");
urlMappings.put("com.product.packagename3", "http://facebook.com");
urlMappings.put("com.product.packagename4", "http://bing.com");
}
public static String resolve(String url) {
return urlMappings.containsKey(url)? urlMappings.get(url) : null;
}
}