2016-04-11 86 views
1

我有兩個應用程序,com.appone.onecom.apptwo.two如何從一個應用程序傳輸數據到另一個應用程序android

我想從appone數據傳輸到apptwo,我要當一個數據轉移到apptwoapptwo打開或者只開放上來(的onResume)和顯示數據。 我寫了這個代碼:

com.appone.one:

Intent i = new Intent(Intent.ACTION_DATE_CHANGED); 
        PackageManager manager = getPackageManager(); 
        i = manager.getLaunchIntentForPackage("com.apptwo.two"); 
        i.putExtra("MessageText",""+Connect.MessageArrive.toString()); 
        i.addCategory(Intent.CATEGORY_LAUNCHER); 
startActivity(i); 

com.apptwo.two:

@Override 
    public void onResume() { 
     super.onResume(); 
     String name=getIntent().getStringExtra("MessageText"); 
     Toast.makeText(getApplicationContext(),String.valueOf(name), Toast.LENGTH_LONG).show(); 
    } 

我只想寫這行:

String name=getIntent().getStringExtra("MessageText"); 

OnResume,因爲我不想再apptwpo加載,如果我在onCreate中寫這行,m y代碼工作正常。但我想在onResume。 現在apptwo返回null :(

我應該怎麼做事先

+0

的可能的複製[如何從一個應用程序發送數據到其他應用程序在Android?](http://stackoverflow.com/questions/14355860/how-to-send-data-from-one-application-to-other-application- in-android) –

+0

不,我現在測試那個帖子,沒有工作 –

回答

1

我解決我的問題與此鏈接: http://androiddhamu.blogspot.in/2012/03/share-data-across-application-in.html

appone:

SharedPreferences prefs = getSharedPreferences("demopref", 
          Context.MODE_WORLD_READABLE); 
        SharedPreferences.Editor editor = prefs.edit(); 
        editor.putString("demostring", ""+Connect.MessageArrive.toString()); 
        editor.commit(); 

        Intent i = new Intent(Intent.ACTION_DATE_CHANGED); 
        PackageManager manager = getPackageManager(); 
        i = manager.getLaunchIntentForPackage("com.graphhopper.android"); 
        // i.putExtra("MessageText",""+Connect.MessageArrive.toString()); 
        i.addCategory(Intent.CATEGORY_LAUNCHER); 


        //i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
        startActivity(i); 

apptwo:

@Override 
    public void onResume() { 
     super.onResume(); 
      con = createPackageContext("com.appone.one", 0); 
      SharedPreferences pref = con.getSharedPreferences(
        "demopref", Context.MODE_PRIVATE); 
      String data = pref.getString("demostring", "No Value"); 
} 
-2

使用Shared Preferences 感謝與模式MODE_WORLD_READABLE

SharedPreferences sPref = activity.getPreferences(Activity.MODE_WORLD_READABLE); 

保存值偏好:

+0

非常感謝。你能解釋一下嗎? –

+0

非常感謝:我使用這個鏈接http://androiddhamu.blogspot.in/2012/03/share-data-across-application-in.html,我的問題解決了 –

+0

爲什麼人們如果答案是正確的或者被接受的話投票呢? –

1

您可以使用內容提供商以便在您的應用程序之間共享數據。您可以通過以下鏈接瞭解有關內容提供商的更多信息:

http://developer.android.com/guide/topics/providers/content-providers.html

注:如果我沒有錯與您的應用程序之間的內容提供商傳遞數據,您需要使用相同的密鑰庫簽署您的應用程序。

您還可以使用Intents將數據傳遞到您的應用程序。你可以從下面檢查它。

http://developer.android.com/training/sharing/send.html

這不是一個很好的做法,但你可以使用共享偏好。

SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE); 
+0

ContentProviders的替代方案是簡單Intents或(綁定)服務。 – F43nd1r

0

這兩個應用程序都是你的,所以可以很容易地做到這一點。

1)通過使用共享偏好,您可以將數據保存在手機app1中,並獲取該數據並在app2中使用,反之亦然。

SharedPreferences僅適用於小數據。

2)內容提供商做你在問什麼。如果需要多個應用程序

http://developer.android.com/guide/topics/providers/content-providers.html

在你的情況之間共享數據,你的應用程序必須是內容提供商

參考這一點,你所問的內容提供商只需要 http://www.compiletimeerror.com/2013/12/content-provider-in-android.html#.Vwsy1vl97IU

+0

非常感謝我使用共享偏好 –

1

第三種,也可能更好的方法是使用或自定義URI scheme。默認情況下,這是Android應用程序發送和接收數據的方式。例如,當您點擊通過電子郵件發送給您的url鏈接時,應用程序將打開默認的瀏覽器應用程序。這是因爲瀏覽器向操作系統註冊了它可以處理符合web uri模式的URI。

見附件鏈接

http://developer.android.com/training/basics/intents/filters.html

+0

我同意。這個解決方案是最簡單的實現 –

0

使用意圖傳遞應用程序之間的數據和廣播接收器

沿

在你appOne創建appOne活動中

1)動態廣播接收器特別活動電話sendBroadcast(意圖)

不要像上面提到的那樣調用活動。在appTwo中註冊廣播接收器並執行一些操作,並使用appTwo中提及的appOne中提及的相同操作從appOne發送「廣播」意圖。 因此,當你從appOne發送sendbradcast(意圖),appTwo傾聽意圖將觸發,並在那裏你調用appTwo的活動(Your MainActivity) Inside onReceive方法的appTwo檢查你的活動是否活動(如果活動是活動的,然後sendBroadcast從appTwo(意向)在appTwo刷新消息,如果你appTwo不調用Activty)

立即創建

1)靜態廣播接收器與內部明顯一些行動收到的意圖時,應用程序是無法打開

2)您的a內部動態廣播接收器ppTwo活動,如果應用程序是開放的刷新消息

相關問題