Najlepsza praktyka - dodawanie aplikacji do menu udostępniania Androida
Moja aplikacja wysyła pliki (wszystkie typy MIME) przez połączenie TCP i dlatego chciałem, aby moja aplikacja pojawiła się w menu udostępniania Android.
Dodałem następujące filtry intencji do mojej aktywności wAndroidManifest.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>
Teraz dodałem to doActivity
który ma zostać uruchomiony po kliknięciu akcji akcji
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));
}
}
}
Używam tej metody do generowania absolutnych ścieżek plików, które mają być udostępniane.
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;
}
Powyższa metoda poprawnie pobiera bezwzględną ścieżkę obrazów / filmów i innych plików. Czy jest coś, co przegapiłem lub czy jest lepszy sposób na zrobienie tego?
DodatkowoShare
menu, jestSend Via
menu na moim telefonie.
Czy istnieje sposób na umieszczenie mojej aplikacji na tej liście?