2013-06-05 5 views
0

다음과 같이 내가가는 오전 시나리오는 다음과 같습니다안드로이드 앱 외부 구성

  1. (APK) "일반"입니다 즉, 즉, 내가
  2. APK가 될 것입니다 서로 다른 자원을 재 컴파일하지 않으려는 안드로이드 응용 프로그램 장치에 "사전 설치"되어 있으므로 "시장"응용 프로그램이되지 않습니다.
  3. 응용 프로그램마다 설치마다 다를 수있는 텍스트 등으로 사용자 지정하는 사용자 지정 구성 파일이 필요합니다. 설정 파일 본질적으로

의 데이터에 따라 응용 프로그램 시동 설정 파일을에

  • 읽고됩니다 (설정 파일이 같은 이름으로 같은 위치에 있어야합니다)와 응용 프로그램을 구성, 이것은 일 것입니다 방법은 응용 프로그램을 프로비저닝하여 재 컴파일하지 않고 구성 파일을 기반으로 특정 모양과 느낌을 취하는 것입니다. 사용자 지정 이미지 파일, 텍스트 데이터 등을로드 할 수 있어야합니다.

    문제는 구성 파일을 SD 카드없이 쉽게 업데이트하여 루트가 아닌 장치에 "복사"해야한다는 것입니다. 따라서 USB 연결을 통해 쉽게 액세스 할 수 있고 APK가 런타임에 액세스 할 수있는 비 앱 특정 위치에 대한 액세스가 필요합니다. SharedPreferences 및 Android 파일 IO는/data/data/pkg/... 또는 외부 저장소 아래의 비공개 앱 디렉토리로 제한됩니다. 어떤 아이디어라도 대단히 감사하겠습니다. 감사.

  • 답변

    0

    그냥 적어도 부분적인 대답으로 업데이트하겠다고 생각했습니다. 적어도 내 문제 중 일부는 내 Razr Maxx에서 디버그 모드로 테스트하는 것과 관련이 있습니다. USB 디버깅을 통해 연결되면 다음과 같이 새 파일을 만드는 호출이 실패합니다.

    06-06 10 : 04 : 30.512 : W/System.err (2583) : java.io.IOException : open failed : EACCES (사용 권한이 거부 됨) 06-06 10 : 04 : 30.512 : W/System.err (2583) : java.io.File.createNewFile (File.java:940)

    독립 실행 형 응용 프로그램을 실행할 때 내 장치 또는 에뮬레이터에서 다음 모든 예상대로 작동합니다. 이것이 Razr Maxx 또는 다른 문제와 관련이 있는지 확실하지 않은가요? 노력

    내 코드 (: Write a file in external storage in Android에서)입니다

    private void writeToSDFile(){ 
    
        // Find the root of the external storage. 
        // See http://developer.android.com/guide/topics/data/data- storage.html#filesExternal 
    
        File root = android.os.Environment.getExternalStorageDirectory(); 
        mStatusTV.append("\nExternal file system root: "+root); 
    
        // See https://stackoverflow.com/questions/3551821/android-write-to-sd-card-folder 
    
        File dir = new File (root.getAbsolutePath() + "/download"); 
        dir.mkdirs(); 
        File file = new File(dir, "myData.txt"); 
    
    
        try { 
         file.createNewFile(); 
    
         FileOutputStream f = new FileOutputStream(file); 
         PrintWriter pw = new PrintWriter(f); 
         pw.println("Hi , How are you"); 
         pw.println("Hello"); 
         pw.flush(); 
         pw.close(); 
         f.close(); 
        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
         Log.i(TAG, "******* File not found. Did you" + 
           " add a WRITE_EXTERNAL_STORAGE permission to the manifest?"); 
         mStatusTV.append("Write File 1: " + e.getMessage()); 
        } catch (IOException e) { 
         e.printStackTrace(); 
         mStatusTV.append("Write File 2: " + e.getMessage()); 
        } 
        mStatusTV.append("\n\nFile written to "+file); 
    }