2012-05-28 14 views
23

मेरा ऐप एक टीसीपी कनेक्शन पर फाइलें (सभी माइम प्रकार) भेजता है और इसलिए मैं चाहता हूं कि मेरा ऐप एंड्रॉइड शेयर मेनू में दिखाई दे।बेस्ट प्रैक्टिस - एंड्रॉइड शेयर मेनू में अपनी ऐप जोड़ना

मैं 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 मेनू है। screenshot

क्या इस ऐप में मेरी ऐप प्राप्त करने का कोई तरीका है?

+2

AFAIK, केवल एक "साझा करें" मेनू है। यह सूची कस्टम हो सकती है, क्योंकि मैं फेसबुक, जी +, ट्विटर को उस सूची में दिखाने की उम्मीद करता हूं अन्यथा यदि आपके पास इंस्टॉल हैं। –

+0

मैं भी ऐसा सोचता हूं क्योंकि सूची में मौजूद लोग डिफ़ॉल्ट एप्लिकेशन हैं जो रोम के साथ आते हैं। सैमसंग ने जो कुछ जोड़ा है वह होना चाहिए :) – coderplus

+0

स्पष्टीकरण के लिए धन्यवाद क्या आपने इसे आजमाया? intent.setType ("*/*"); – jzafrilla

उत्तर

0

मैंने इस मुद्दे से निपटने की कोशिश की और मुझे पूरा यकीन है कि सैमसंग की गैलरी उस मेनू के माध्यम से साझा करने के लिए कुछ कस्टम कार्रवाई का उपयोग करती है। इस बात को ध्यान में रखते हुए कि सभी सूचीबद्ध एप्लिकेशन प्रीइंस्टॉल किए गए हैं, यह स्पष्ट है कि सैमसंग ने सभी सूचीबद्ध एप्लिकेशन डेवलपर्स के साथ अपनी कस्टम मंशा कार्रवाई का उपयोग करने के लिए सहमति व्यक्त की है।

मैंने सैमसंग से संपर्क करने का भी प्रयास किया है और उन्होंने अभी तक जवाब नहीं दिया है।

0

मैं इसे यहाँ रेखांकित किया है कि कैसे मेनू में पाने के लिए:

http://blog.blundellapps.com/add-your-app-to-the-android-menu/

मूल रूप से यह है कि आपके माइम प्रकार / होने:

 <intent-filter> 
      <action android:name="android.intent.action.GET_CONTENT" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data android:mimeType="*/*" /> 
     </intent-filter> 

आपको लगता है कि क्या करना है और यह नहीं करता है, तो टी दिखाता है, इसका मतलब है कि वे एक इरादा मेनू का उपयोग कर रहे हैं और यह एक कस्टम शेयर सूची है ताकि आप अपना रास्ता मजबूर नहीं कर सकें।

+0

लिंक फ़िशिंग साइट –

+0

पर जाता है, पुराना डोमेन – Blundell

2

मुझे लगता है कि आप ऐप के बाहर से छवियों को साझा कर रहे हैं। कृपया intentfiler में minetype परिभाषित करें। यह मेरी तरफ ठीक काम कर रहा है।

<activity 
      android:name=".SharePhotoFromOutSide" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.SEND" /> 

       <category android:name="android.intent.category.DEFAULT" /> 

       <data android:mimeType="photo/*" /> 
      </intent-filter> 
     </activity> 
+0

था, मुझे लगता है कि आपका फ़िल्टर mimeType को छोड़कर मेरा जैसा ही है। मेन सभी फ़ाइल प्रकारों के लिए साझा मेनू दिखाता है। मेरे मूल प्रश्न में मेनू एक कस्टम सैमसंग मेनू है और मुझे नहीं लगता कि मैनिफेस्ट में संशोधन करके इसमें शामिल होने का एक तरीका है। क्या माइम टाइप 'फोटो/* मौजूद है? अगर मैं सिर्फ छवियों को साझा करने की कोशिश कर रहा था तो मैं 'image/*' का उपयोग करता था - http://en.wikipedia.org/wiki/Internet_media_type – coderplus

+0

*/* सभी प्रकार की फाइल को परिभाषित करता है, लेकिन आप फोटो/* ऐप के बाहर से फोटो साझा करने के लिए। मेरे पक्ष में यह ठीक काम कर रहा है। –

संबंधित मुद्दे