2012-04-22 58 views
0

開放的應用程序我用下面的代碼在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; 
} 
+0

你能詳細說說嗎?你的代碼不工作? – 2012-04-22 16:24:49

回答

1

怎麼能在我的活動獲取文件名?

呼叫getIntent()來獲取你的啓動活動Intent,然後調用getData()Intent獲取內容的Uri被打開。