2015-07-15 13 views
6

Chcę, aby moja aplikacja jak Instagram mogę udostępnić obrazki bezpośrednio z mojej aplikacji, jak gdybym wybrać dowolny obraz z galerii i kiedy kliknij na akcję moja aplikacja pokazuje na lista Wybieraczaodbiera dane z innych aplikacji pochodzi zerowy w android

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 


<activity 
       android:name=".ui.activities.SplashActivity" 
       android:label="@string/app_name" 
       android:launchMode="singleTop" 
       android:screenOrientation="sensorPortrait" 
       android:windowSoftInputMode="adjustResize" > 
       <intent-filter> 
        <action android:name="android.intent.action.SEND" /> 

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

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

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

        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
    </activity> 

kod do odbioru danych z zamiarem jest

private void initActivityState() { 
     if (getIntent() != null){ 
      runShareActivityIntent(); 
     } 
} 
public void runShareActivityIntent(){ 
     Intent passIntent=getIntent(); 
     String action = passIntent.getAction(); 
     String type = passIntent.getType(); 

     if (Intent.ACTION_SEND.equals(action) && type != null) { 
      Uri imageUri = (Uri) passIntent.getParcelableExtra(Intent.EXTRA_STREAM);  
      Intent intentcall = new Intent(this, MainActivity.class); 
      intentcall.putExtra(KEY_TYPE,type); 
      intentcall.putExtra(KEY_VALUE,imageUri.toString()); 
      startActivity(intentcall); 
      finish(); 
     } 

    } 

N ow w moim przypadku, kiedy moja aplikacja jest w tle jestem w stanie uzyskać

String type = passIntent.getType(); 

i jestem w stanie uzyskać obrazu uri ale kiedy moja aplikacja nie jest uruchomiony (zabić aplikację) i ja wybrać moją aplikację z chooser ja dostać wpisać jako wartość null

Odpowiedz

0

spróbuj dodać uprawnienia do pliku manifestu:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
+0

uprawnienia już dodane – Raj

+0

czy możesz zamieścić swój logcat? –

2

ten pracował dla mnie

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

        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
       <intent-filter> 
        <action android:name="android.intent.action.SEND" /> 

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

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

Musisz zmienić w Manifeast.xml

<intent-filter> 
      <action android:name="android.intent.action.SEND" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="image/*" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="audio/*" /> 
     </intent-filter> 

W swojej głównej działalności trzeba otrzymać intencyjny w sprawie sposobu onCreate().

Intent intent = getIntent(); 
    String action = intent.getAction(); 
    String type = intent.getType(); 
    if (Intent.ACTION_SEND.equals(action) && type != null) { 
     if (type.startsWith("image/")) { 
      handleSendImage(intent); // Handle single image being sent 
     } 
     else if (type.startsWith("audio/")) { 
      handleSendAudio(intent); // Handle single audio being sent 
     } 
    } 

Teraz, gdy zadzwonisz do aplikacji za pomocą polecenia Wyślij. Możesz zobaczyć ikonę swojej aplikacji. Kiedy osiągniesz cel, możesz zmienić się w zależności od potrzeb.

Mam nadzieję, że to może ci pomóc.

Powiązane problemy