我的應用程序通過TCP連接發送的文件(所有MIME類型),所以我想我的應用程序出現在Android共享菜單。最佳實踐 - 將您的應用程序到Android共享菜單
我增加了以下意圖過濾到我的活動在AndroidManifest.xml
<intent-filter ><!--intent filter for single file sharing-->
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter ><!--intent filter for sharing multiple files-->
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
現在,我已將此添加到Activity
這是要在點擊共享動作
Intent intent = getIntent();
if (Intent.ACTION_SEND.equals(intent.getAction()))
{
Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (uri != null) {
fileset = new HashSet();
fileset.add(getPathfromUri(uri));
}
}
else if (Intent.ACTION_SEND_MULTIPLE.equals(intent.getAction()))
{
ArrayList<Uri> uris= intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
if (uris != null) {
fileset = new HashSet();
for(Uri uri : uris)
{
fileset.add(getPathfromUri(uri));
}
}
}
我用這個方法啓動生成要共享的文件的絕對路徑。
public String getPathfromUri(Uri uri) {
if(uri.toString().startsWith("file://"))
return uri.getPath();
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
startManagingCursor(cursor);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String path= cursor.getString(column_index);
//cursor.close();
return path;
}
上述方法準確取回,我已經錯過了或者是有這樣做的更好的辦法圖像/視頻和其他files.Is有什麼的絕對路徑?
除了Share
菜單裏,有我的電話一個Send Via
菜單。
有沒有辦法讓我的應用程序進入這個列表?
據我所知,只有一個 「共享」 菜單。該列表可能是自定義的,因爲我希望Facebook,G +,Twitter會顯示在該列表中,否則如果您安裝了這些列表。 –
我也這麼認爲,列表中的那些是ROM隨附的默認應用程序。這一定是三星已經加入:)感謝澄清 – coderplus
你試過嗎? intent.setType( 「*/*」); – jzafrilla