从共享菜单打开应用程序时获取文件位置

时间:2012-04-22 16:05:13

标签: android

我使用下面的代码在audio files分享菜单中注册我的应用程序:

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="audio/*" />
</intent-filter>

如何在我的活动中获取文件名?

我测试了以下代码,但没有工作:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);

    Intent intent = getIntent();
    Bundle extras = intent.getExtras();
    String action = intent.getAction();

    String FilePath  = "";

    if (Intent.ACTION_SEND.equals(action)) {   
        if (extras.containsKey(Intent.EXTRA_STREAM)) {
            Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);
            FilePath = parseUriToFilename(uri);
        }
    }
}

public String parseUriToFilename(Uri uri) {
    String selectedFile = null;
    String filemanagerPath = uri.getPath();

    String[] projection = { MediaStore.Audio.Media.DATA};
    Cursor cursor = managedQuery(uri, projection, null, null, null);

    if (cursor != null) {
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
        cursor.moveToFirst();
        selectedFile = cursor.getString(column_index);
    }

    if (selectedFile != null) {
        return selectedFile;
    }
    else if (filemanagerPath != null) {
        return filemanagerPath;
    }
    return null;
} 

1 个答案:

答案 0 :(得分:1)

  

如何在我的活动中获取文件名?

致电getIntent()以获取开始您的活动的Intent,然后致电getData()上的Intent以获取要打开的Uri内容