1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

ContentResolver (insert) bringt Programm zum Absturz

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von DocJunioR, 25.06.2009.

  1. DocJunioR, 25.06.2009 #1
    DocJunioR

    DocJunioR Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    56
    Erhaltene Danke:
    6
    Registriert seit:
    25.06.2009
    Ich bin gerade dabei, mir einen Importer für .CSV-Dateien zu schreiben, die ein Outlook mal ausgespuckt hat, nachdem mein altes handy dort synchronisiert wurde.

    Jetzt habe ich mir also einen Filebrowser geschrieben, der das System durchwandern kann. Auf Buttondruck soll das Ganze dann importiert werden.

    Zum Testen habe ich jetzt einfach erstmal den Insert aus dem dev guide ausprobiert. Das Ganze sieht so aus
    Code:
    [B]package de.docjunior.importel;
    
    import java.io.File;
    
    import android.app.Activity;
    import android.content.ContentResolver;
    import android.content.ContentValues;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.Contacts.People;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.AdapterView.OnItemClickListener;
    
    public class ImportTelefonnummern extends Activity implements
            OnItemClickListener, OnClickListener {
        private TextView tv;
        private Button   bt;
        private ListView lv;
    
        private String path;
        private ArrayAdapter<String> files;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.filebrowser_dialog);
    
            tv = (TextView) findViewById(R.id.Pfad);
            
            bt = (Button) findViewById(R.id.Submit);
            bt.setOnClickListener(this);
            
            lv = (ListView) findViewById(R.id.FileList);
            lv.setOnItemClickListener(this);
    
            path = getString(R.string.browser_root);
            getFileList();
    
        }
    
        /** lists all files in a directory */
        protected void getFileList() {
    
            /* list files in directory */
            File dirFile = new File(path);
            if (dirFile.isDirectory()) {
    
                String fileList[] = dirFile.list();
                for (int i = 0; i < fileList.length; i++) {
                    File fp = new File(path + fileList[i]);
                    if (fp.isDirectory()) {
                        fileList[i] = fileList[i] + "/";
                    }
                }
    
                files = new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, fileList);
    
                /* create a ListAdapter from filelist */
                lv.setAdapter(files);
    
                /* enable listview textfilter */
                lv.setTextFilterEnabled(true);
    
            }
        }
    
        public void onItemClick(AdapterView<?> l, View v, int position, long id) {
    
            if (l == lv) {
    
                String newDir = path + files.getItem(position);
                File file = new File(newDir);
                // if file is a directory
                if (file.isDirectory()) {
                    path = newDir;
                    this.getFileList();
                }
                // set selection as text
                tv.setText(newDir);
            } 
        }
    
        public void onClick (View v) {
            if (v == bt) {
                // TODO: parse the File and import to Content Provider People
                ContentValues values = new ContentValues();
    
                // Add Abraham Lincoln to contacts and make him a favorite.
                values.put(People.NAME, "Abraham Lincoln");
                // 1 = the new contact is ad    ded to favorites
                // 0 = the new contact is not added to favorites
                values.put(People.STARRED, 1);
    
                Uri uri = getContentResolver().insert(People.CONTENT_URI, values);
                
            }
        }
        
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            // return super.onKeyDown(keyCode, event);
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                
                // recreate String
                String dirlist[] = path.split("/");
                String newDir = "/";
    
                // put slashes to directories
                for (int i = 1; i < (dirlist.length - 1); i++) {
                    newDir = newDir + dirlist[i] + "/";
                }
    
                // recreate list
                path = newDir;
                tv.setText(path);
                this.getFileList();
            }
            return true;
        }
    
    }[/B]
    Beim Knopfdruck stirbt das Programm ab. Aber warum?
     
  2. zx128, 25.06.2009 #2
    zx128

    zx128 Android-Lexikon

    Beiträge:
    1,179
    Erhaltene Danke:
    143
    Registriert seit:
    23.01.2009
    Logs? Am besten Ausgabe von "adb logcat"
     
  3. DocJunioR, 25.06.2009 #3
    DocJunioR

    DocJunioR Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    56
    Erhaltene Danke:
    6
    Registriert seit:
    25.06.2009
    wenn du mir jetzt noch erklären könntest, wie das geht? ich hab vorgestern angefangen, mich durch die api zu graben..
     
  4. swordi, 25.06.2009 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wenn du eclipse hast, dann einfach debug starten und in die debug view wechseln, dann zeigt er dir die fehler schon etwas besser an
     
  5. DocJunioR, 25.06.2009 #5
    DocJunioR

    DocJunioR Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    56
    Erhaltene Danke:
    6
    Registriert seit:
    25.06.2009
    ah siehda!! ich hatt gar keine permission dafür- warum steht das nicht im dev guide drin???
     

Diese Seite empfehlen