내 앱이 TCP 연결을 통해 파일 (모든 MIME 유형)을 전송하므로 내 앱이 Android 공유 메뉴에 표시되기를 원합니다. 모범 사례 - Android 공유 메뉴에 앱 추가
나는 이제 공유 작업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));
}
}
}
나는이 방법을 사용을 클릭에 출시 될 수있는 Activity
이 추가
<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>
AndroidManifest.xml
내 활동에 다음 인 텐트 필터를 추가 공유 할 파일의 절대 경로를 생성합니다.
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
메뉴가 있습니다.
내 앱을이 목록에 추가 할 수있는 방법이 있습니까?
AFAIK에는 "공유"메뉴 만 있습니다. Facebook, G +, Twitter가 그렇지 않으면 그 목록에 나타나기를 기대하기 때문에 그 목록은 사용자 정의 일 수 있습니다. –
나는 목록에있는 것들이 ROM과 함께 제공되는 기본 응용 프로그램이기 때문에 나는 그렇게 생각한다. 그게 삼성이 추가 한 것임에 틀림 없습니다. 명확히 해 주셔서 감사합니다 – coderplus
시도해 보셨습니까? intent.setType ("*/*"); – jzafrilla