簡體   English   中英

插入文件時應用崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM