Java tutorial
//package com.java2s; /* * Copyright (C) 2012 The Android Open Source Project * Copyright (C) 2009-2013 University of Washington * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ import java.io.File; import java.util.ArrayList; import android.os.Environment; public class Main { private static final String ODK_FOLDER_NAME = "opendatakit"; /** * The formPath is relative to the framework directory and is passed into * the WebKit to specify the form to display. * * @param appName * @param formDefFile * @return */ public static String getRelativeFormPath(String appName, File formDefFile) { // compute FORM_PATH... // we need to do this relative to the AppFolder, as the // common index.html is under the ./system folder. String relativePath = asRelativePath(appName, formDefFile.getParentFile()); // adjust for relative path from ./system... relativePath = ".." + File.separator + relativePath + File.separator; return relativePath; } /** * Returns the relative path beginning after the getAppFolder(appName) directory. * The relative path does not start or end with a '/' * * @param appName * @param fileUnderAppName * @return */ public static String asRelativePath(String appName, File fileUnderAppName) { // convert fileUnderAppName to a relative path such that if // we just append it to the AppFolder, we have a full path. File parentDir = new File(getAppFolder(appName)); ArrayList<String> pathElements = new ArrayList<String>(); File f = fileUnderAppName; while (f != null && !f.equals(parentDir)) { pathElements.add(f.getName()); f = f.getParentFile(); } if (f == null) { throw new IllegalArgumentException("file is not located under this appName (" + appName + ")!"); } StringBuilder b = new StringBuilder(); for (int i = pathElements.size() - 1; i >= 0; --i) { String element = pathElements.get(i); b.append(element); if (i != 0) { b.append(File.separator); } } return b.toString(); } public static String getAppFolder(String appName) { String path = getOdkFolder() + File.separator + appName; return path; } public static String getOdkFolder() { String path = Environment.getExternalStorageDirectory() + File.separator + ODK_FOLDER_NAME; return path; } }