我的应用程序通过TCP连接发送的文件(所有MIME类型),所以我想我的应用程序出现在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
菜单上我手机。
有没有办法让我的应用程序在此列表中?