2017-02-01 10 views
1

Я надеюсь, что один из вас, прекрасный народ, сможет помочь мне с небольшой проблемой, с которой я сталкиваюсь, используя Android Intent.createChooser(). Я изучаю, как я иду с моим приложением, поэтому прошу прощения, если у меня есть неправильный конец палки, как это должно работать!Android createChooser появляется перед Упражнение

Я слежу за несколькими учебниками и реализовал некоторый код, который запускает Intent.createChooser(), чтобы разделить картинку на социальные сети. Код, который я использовал, отлично работает в том, что я могу поделиться изображением, как я предполагал, моя проблема в том, что при запуске кода моя основная активность (или любое действие, которое я вызываю из кода), похоже, закрывается, и появляется выборщик перед рабочим столом или любыми другими приложениями, которые я могу открыть. Эффект, который я надеялся иметь, и тот, который, как представляется, был ясен в учебниках, заключается в том, что выборщик появляется перед запущенной активностью (например, как и для галереи).

Я использую LibGDX, что означает, что мне пришлось использовать интерфейс для вызова функции android, которая выполняет код выбора (в моем java-файле AndroidLauncher). Все интерфейсы работают нормально, но я не был уверен, может ли это повлиять на то, как работает этот код. Я также играл с заменой на новое действие для реализации кода выбора, который я переместил с AndroidLauncher. У этого был тот же конечный результат.

Любые советы о том, как сделать выборщик перед моей заявкой, будут очень благодарны! Код, который реализует createChooser приведен ниже:

public void ShareHandler(){ 
    String type = "image/*"; 
    String mediaPath = Environment.getExternalStorageDirectory().getPath()+"/Smile.png"; 
    createShareIntent(type, mediaPath); 
} 

private void createShareIntent(String type, String mediaPath) 
{ 
    Intent share = new Intent(Intent.ACTION_SEND); 
    share.setType(type); 
    File media = new File(mediaPath); 
    Uri uri = Uri.fromFile(media); 
    share.putExtra(Intent.EXTRA_STREAM, uri); 
    startActivity(Intent.createChooser(share, "Share to")); 
} 

Android Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.game" 
    android:versionCode="1" 
    android:versionName="1.0"> 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="25" /> 

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


    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/GdxTheme"> 
     <activity 
      android:name=".AndroidLauncher" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".FacebookServiceHandler" /> 

     <meta-data 
      android:name="come.facebook.sdk.ApplicationID" 
      android:value="@string/facebook_app_id" /> 

     <provider 
      android:name="com.facebook.FacebookContentProvider" 
      android:authorities="com.facebook.app.FacebookContentProviderxxxxxxxxxxxxx" 
      android:exported="true" /> 

    </application> 

</manifest> 

Заранее спасибо, Бен.

+0

Можете ли вы разместить Androidmanifest.xml, что, вероятно, прояснит ситуацию. – Alex

+0

Обновлено с помощью Androidmanifest.xml в соответствии с запросом. –

+0

Откуда вы вызываете 'createShareIntent'? Этот ShareHandler является android.os.Handler? – Tenfour04

ответ

-1

Благодарим вас за предложения, я сейчас решил проблему. Оказалось, что мой код работал правильно все время, и проблема, с которой я столкнулся, была вызвана операцией exit в моем Java-коде ядра (LibGDX). По сути, когда вызывается функция startActivity (Intent.createChooser (...)), также вызывается функция удаления внутри моих основных файлов. Эта функция dispose содержала команду exit и вызывала завершение приложения.

0

Если

android:name=".FacebookServiceHandler" 

является деятельность, что обрабатывать обмен социальных медиа картины, я бы расширить, что-то вроде этого:

<activity 
    android:name=".FacebookServiceHandler"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value=".AndroidLauncher"> 
    </meta-data> 
</activity> 

Это скажет программка, что AndroidLauncher является родительской активностью и должен появляться перед вашей деятельностью.

+0

Спасибо за быстрый ответ Alex. Извините, я, вероятно, должен был удалить этот бит. Обработчик FacebookService - это другое действие, с которым я играл. Фактическое намерение реализовано непосредственно с AndroidLauncher. При этом я попробую то, что вы предложили выше, реализовав намерение в другом действии, поскольку это может быть ответ. Я отчитаю, как только я дам ему пойти –