2017-02-01 23 views
1

前面我希望你們中的一個好人可能能夠幫助我解決我在使用Android Intent.createChooser()時遇到的一個小問題。我正在學習,因爲我去了我的應用程序,所以我很抱歉,如果我有這個應該如何工作棒的錯誤結局!Android createChooser出現在活動

我一直在關注一些教程,並實現了一些代碼,它啓動一個Intent.createChooser()來分享圖片到社交媒體。我使用的代碼正常工作,因爲我可以按照我的意圖分享圖片,我的問題是當代碼運行時,我的主要活動(或者我稱之爲代碼的任何活動)似乎關閉,選擇器出現在主屏幕或我可能已經打開的任何其他應用程序前面。我希望能夠獲得的效果以及在教程中看起來很明顯的效果是讓選擇器出現在跑步活動的前面(例如,對於畫廊而言)。

我正在使用LibGDX,這意味着我不得不使用一個接口來調用執行選擇器代碼的Android函數(在我的AndroidLauncher java文件中)。接口都工作正常,但我不確定這是否會影響代碼的運行方式。我也玩過換一個新的活動來實現我從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清單:預先,本

<?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

謝謝你的建議,我現在已經解決了我的問題。事實證明,我的代碼一直工作正常,我遇到的問題是由於我的Core(LibGDX)java代碼中的退出語句的結果。本質上,當調用startActivity(Intent.createChooser(...))時,我的核心文件中的dispose函數也被調用。此dispose函數包含exit命令並導致應用程序完成。

0

如果

android:name=".FacebookServiceHandler" 

是活動,是處理圖片的社交媒體分享,我會展開來是這樣的:

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

這將告訴PROGRAMM,該AndroidLauncher是父活動,應該讓它出現在你的活動前面。

+0

感謝您的快速答覆亞歷克斯。對不起,我可能應該刪除那一點。 FacebookService Handler來自我正在玩的不同活動。實際意圖直接從AndroidLauncher實現。話雖如此,我會嘗試通過在另一項活動中實現意圖來達成上述建議,因爲這可能是答案。一旦我給了它一次,我會報告回來 –

相關問題