필자는 액티비티에서 getFilesDir()을 사용하고 파일을 저장/읽기 위해 파일 이름을 사용할 수 있음을 알고 있습니다. 그러나 위젯 내에서 getFilesDir()을 호출하려고하면 오류가 발생합니다. 위젯과 활동 모두에서 동일한 텍스트 파일에 액세스 할 수 있기를 원합니다.위젯과 활동간에 개인 파일을 공유하는 방법은 무엇입니까?
가장 간단한 방법은 무엇입니까?
필자는 액티비티에서 getFilesDir()을 사용하고 파일을 저장/읽기 위해 파일 이름을 사용할 수 있음을 알고 있습니다. 그러나 위젯 내에서 getFilesDir()을 호출하려고하면 오류가 발생합니다. 위젯과 활동 모두에서 동일한 텍스트 파일에 액세스 할 수 있기를 원합니다.위젯과 활동간에 개인 파일을 공유하는 방법은 무엇입니까?
가장 간단한 방법은 무엇입니까?
. 다음은 간단한 예제이다
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"));
경고 : 그대로이 코드를 사용하지 마십시오. 오류 및 엣지 케이스를 포착하는 적절한 코드를 사용해야합니다.
바보 같은 날! 방금 onUpdate가 Context를 전달한다는 것을 알았습니다 ... 당신의 대답은 "잘 생각하면 어디에서 mContext를 가져 옵니까?" 감사!!! 지금은 잘 작동합니다. – PawelP
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();
"상황 컨텍스트 = getApplicationContext();"를 사용할 때 "... 위젯 유형이 정의되지 않았습니다."라는 메시지가 나타납니다. 나는 무엇을 놓치고 있습니까? – PawelP
@ PawełParadowski 제 편집을 참조하십시오. – hasanghaforian
무엇이 오류입니까? –
ur 코드를 표시하고 ur 스택을 ... – duggu