-1

我正在编写 android 应用程序,我可以在其中将文件添加到我的共享文件夹中。

这是我打开对话框的代码(用于文件浏览)

  Intent pickFileIntent = new Intent();
  pickFileIntent.setAction(Intent.ACTION_GET_CONTENT);
  pickFileIntent.addCategory(Intent.CATEGORY_OPENABLE);
  pickFileIntent.setType("*/*");
  Intent chooserIntent = Intent.createChooser(pickFileIntent,
  getText(R.string.choosefile_title));
  //Toast.makeText(FileShare.this, "",1).show();
  startActivityForResult(chooserIntent, PICK_FILE_REQUEST);

它适用于图像和其他 mp3 文件。但是当我点击文件浏览器时,它给了我错误。以下是文件浏览器和logcat的代码

         public void onCreate(Bundle icicle) {
            super.onCreate(icicle);

            /* If no data is supplied, get default from the FileProvider */
            if (getIntent().getData() == null) {
              getIntent().setData(FileProvider.CONTENT_URI);
            }
            String currentPath = FileProvider.getPath(getIntent().getData());

            /* Special case for "/". Wouldn't need this is we have a class to 
             * do path joining for us */
            if (currentPath.equals("/"))
              currentPath = "";
           mPaths.push(currentPath);

            /* Populate list with the root content */
        //Error in following line when i debug
            Cursor c = managedQuery(getIntent().getData(), null, null, null, null);
            changeCursor(c);
            registerForContextMenu(getListView());
          }

LOGCAT

        10-08 19:18:55.867: E/AndroidRuntime(16386): FATAL EXCEPTION: main
        10-08 19:18:55.867: E/AndroidRuntime(16386): java.lang.RuntimeException: Unable
        to start activity   
                  ComponentInfo{com.fyp.fileshare/com.fyp.fileshare.FileBrowser}:                                                 
        java.lang.ClassCastException: java.lang.Integer
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at             
        android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.os.Handler.dispatchMessage(Handler.java:99)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.os.Looper.loop(Looper.java:130)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.app.ActivityThread.main(ActivityThread.java:3687)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at java.lang.reflect.Method.invokeNative(Native Method)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at             
        java.lang.reflect.Method.invoke(Method.java:507)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at dalvik.system.NativeStart.main(Native Method)
        10-08 19:18:55.867: E/AndroidRuntime(16386): Caused by: java.lang.ClassCastException: java.lang.Integer
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at com.fyp.fileshare.FileProvider$1.compare(FileProvider.java:103)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at com.fyp.fileshare.FileProvider$1.compare(FileProvider.java:1)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at java.util.TimSort.countRunAndMakeAscending(TimSort.java:320)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at java.util.TimSort.sort(TimSort.java:199)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at java.util.TimSort.sort(TimSort.java:169)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at java.util.Arrays.sort(Arrays.java:2090)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at java.util.Collections.sort(Collections.java:1965)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at com.fyp.fileshare.FileProvider.getCursorForFiles(FileProvider.java:101)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at com.fyp.fileshare.FileProvider.query(FileProvider.java:60)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.content.ContentProvider$Transport.query(ContentProvider.java:187)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.content.ContentResolver.query(ContentResolver.java:262)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.app.Activity.managedQuery(Activity.java:1550)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at com.fyp.fileshare.FileBrowser.onCreate(FileBrowser.java:68)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
        10-08 19:18:55.867: E/AndroidRuntime(16386):    ... 11 more

#100 中的行:

100// Sort listing by display name. 
101 Collections.sort(fileList, new Comparator<Object[]>() { 
102 public int compare(Object[] r1, Object[] r2) { 
103 return ((String) r1[1]).compareTo((String) r2[2]); } });
4

1 回答 1

0

问题是 return ((String) r1[1]).compareTo((String) r2[2]); 其中一个不是字符串

回答者:njzk2

于 2012-10-10T19:58:28.227 回答