2013-03-23 2 views
0

필자는 액티비티에서 getFilesDir()을 사용하고 파일을 저장/읽기 위해 파일 이름을 사용할 수 있음을 알고 있습니다. 그러나 위젯 내에서 getFilesDir()을 호출하려고하면 오류가 발생합니다. 위젯과 활동 모두에서 동일한 텍스트 파일에 액세스 할 수 있기를 원합니다.위젯과 활동간에 개인 파일을 공유하는 방법은 무엇입니까?

가장 간단한 방법은 무엇입니까?

+1

무엇이 오류입니까? –

+0

ur 코드를 표시하고 ur 스택을 ... – duggu

답변

1

. 다음은 간단한 예제이다

AssetManager assetManager = getAssets(); 
String[] files = assetManager.list("Files"); 
InputStream input = assetManager.open("helloworld.txt"); 
int size = input.available(); 
byte[] buffer = new byte[size]; 
input.read(buffer); 
input.close(); 
String text = new String(buffer); 

업데이트 : 죄송합니다, 당신이 위젯에 사용하기 위해이 원하는 것을 잊어 버렸습니다. 당신은 this answer에서이 코드를 시도 할 수 있습니다 :

InputStream is = mContext.getAssets().open(someFile); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8")); 

경고 : 그대로이 코드를 사용하지 마십시오. 오류 및 엣지 케이스를 포착하는 적절한 코드를 사용해야합니다.

+0

바보 같은 날! 방금 onUpdate가 Context를 전달한다는 것을 알았습니다 ... 당신의 대답은 "잘 생각하면 어디에서 mContext를 가져 옵니까?" 감사!!! 지금은 잘 작동합니다. – PawelP

2

Context에서 getFilesDir()을 사용할 수 있습니다. 따라서 \ Application에서 파일을 저장하고 저장할 수 있습니다.

편집 : 당신은 Application에서 클래스를 확장하고 문맥의 사용이

: 앱 manifest에 그런

public class App extends Application{ 

    private static Context mContext; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mContext = this; 
    } 

    public static Context getContext(){ 
     return mContext; 
    } 
} 

, 그 클래스의 이름으로 Application 태그의 name 속성을 설정 예 :

android:name="App" 

참고 : 앱은 그 클래스의 이름은 Application입니다.

지금 당신이 저장해야 할 상황이다 사용할 수 있습니다 \ 읽기 : 당신은이 목적을 위해 AssetManager을 사용할 수 있습니다

App.getContext().getFilesDir(); 
+0

"상황 컨텍스트 = getApplicationContext();"를 사용할 때 "... 위젯 유형이 정의되지 않았습니다."라는 메시지가 나타납니다. 나는 무엇을 놓치고 있습니까? – PawelP

+0

@ PawełParadowski 제 편집을 참조하십시오. – hasanghaforian

관련 문제