別のアプリ用に内部的に基本的なファイルを作成しようとしています。そこで、ねじれを解決するための基本的なアプリを作成し、それを他のアプリに追加しようとしました。猫のログはこちら
10-09 17:56:14.579: D/dalvikvm(11092): Not late-enabling CheckJNI (already on)
10-09 17:56:15.599: E/Trace(11092): error opening trace file: No such file or directory (2)
10-09 17:56:16.549: D/gralloc_goldfish(11092): Emulator without GPU emulation detected.
10-09 17:57:20.158: D/dalvikvm(11092): Debugger has detached; object registry had 1 entries
10-09 17:57:30.078: E/Trace(11662): error opening trace file: No such file or directory (2)
10-09 17:57:30.759: D/gralloc_goldfish(11662): Emulator without GPU emulation detected.
ファイルが作成されます。しかし、onClick からファイルを作成するコードを実装したときは、そうではありませんでした。または、作成中のファイルをメインクラス以外のクラスに配置すると、ファイルが作成されませんでした。
これが私の基本的なコードです。
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newFile();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public String timeStamp(){
Date myDate = new Date();
return (DateFormat.getDateInstance().format(myDate) + " " + DateFormat.getTimeInstance().format(myDate));
}
public void newFile (){
String FILENAME = timeStamp();
String string = "hello world!";
FileOutputStream fos = null;
try {
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.write(string.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}`
今のところ、ボタンと他のクラスを取り除きました。これは、通常の hello worlds 画面以外のすべてのコードと、変更されていないマニフェストです。
編集 上記のコードは機能し、ファイルは /data/data/com.newapp/files に作成されます ファイルが作成されたことを確認するためにもう一度実行し、猫からこれを取得しました。
10-09 17:57:29.482: D/dalvikvm(11662): CheckJNI を有効にしていません (既にオンになっています) 10-09 17:57:30.078: E/Trace(11662): トレース ファイルを開く際のエラー: そのようなファイルはありませんまたはディレクトリ (2) 10-09 17:57:30.759: D/gralloc_goldfish(11662): GPU エミュレーションなしのエミュレータが検出されました。10-09 18:53:35.238: D/dalvikvm(11662): デバッガーが切り離されました。オブジェクト レジストリには 1 つのエントリがありました 10-09 18:53:53.389: E/Trace(14975): トレース ファイルを開く際のエラー: そのようなファイルまたはディレクトリはありません (2) 10-09 18:53:54.658: I/Choreographer(14975): 36コマ飛ばした!アプリケーションがメイン スレッドで処理しすぎている可能性があります。10-09 18:53:54.668: D/gralloc_goldfish(14975): GPU エミュレーションなしのエミュレーターが検出されました。
これを独自のクラスに移動して試してみます。
独自のクラスでのファイルの作成を次に示します。package com.newapp;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.Context;
public class NewFile extends Activity {
public String timeStamp(){
Date myDate = new Date();
return (DateFormat.getDateInstance().format(myDate) + " " + DateFormat.getTimeInstance().format(myDate));
}
public NewFile (){
String FILENAME = timeStamp();
String string = "hello world!";
FileOutputStream fos = null;
try {
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.write(string.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
そして、ここに主な活動があります:
package com.newapp;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NewFile firstone = new NewFile();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
最後に、NewFile(); を使用していくつかの異なる方法を試しました。通常のメソッドとしてのコンストラクターとして、firstone.newFile() を呼び出します。多くの問題を抱えているため、現在は仮想デバイスまたはタブレットでも実行できません.