[英]App crashes while inserting into file
我正在开发用于拦截电话的Android应用。 呼叫拦截部分工作正常! 但是当我尝试将电话号码保存到文件中时,应用程序崩溃了。 我不是Android编程专家。
这是我的Java类:
private class CallStateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
// called when someone is ringing to this phone
Toast.makeText(ctx,"Incoming: "+incomingNumber,
Toast.LENGTH_LONG).show();
ob.write(incomingNumber);
break;
}
ob是MainActivity的对象。 write()是MainActivity中的公共方法。 我的MainActivity如下:公共类MainActivity扩展了Activity {
private boolean detectEnabled;
private TextView textViewDetectState;
private Button buttonToggleDetect;
private Button buttonExit;
public void write(String a) {
try {
File sdcard=getExternalFilesDir(null);
File directory=new File(sdcard.getAbsolutePath()+"/MyFiles");
directory.mkdir();
File file=new File(directory,"CALLS.txt");
FileOutputStream fout=new FileOutputStream(file);
OutputStreamWriter osw=new OutputStreamWriter(fout);
osw.append(a);
osw.close();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (NullPointerException e) {
e.printStackTrace();
}
首先,请确保您已将适当的权限添加到清单android.permission.WRITE_EXTERNAL_STORAGE。
如果有的话,我建议您不要使用诸如“ \\”或“ /”之类的硬编码斜杠。 而不是使用File.separator,它将返回一个代表文件分隔符的字符串。
例如,您可以尝试将内容写入文件中,如下所示:
byte data[] = yourString.getBytes();
String path = "your path";
String name = "your file name";
FileOutputStream out = new FileOutputStream(path+File.separator+name);
out.write(data);
out.close();
请将以下代码段添加到manifest.xml
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.