簡體   English   中英

從另一個應用程序獲取有關ActivityResult的數據

[英]get data onActivityResult from another application

我有兩個應用程序 A 和 B。

應用A

以下代碼我啟動 B 應用程序以從 A 應用程序活動中獲取結果 ..

   String packageName = "com.cm.applicationb";
            PackageManager manager = context.getPackageManager();
            Intent i = manager.getLaunchIntentForPackage(packageName);
            i.addCategory(Intent.CATEGORY_LAUNCHER);
            i.putExtra("grand_total", "2500");
            i.setAction(packageName);
            startActivityForResult(i, REQUEST_DATA);

從應用程序調用 onActivityResutl

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==REQUEST_DATA)
        if (resultCode == Activity.RESULT_OK) {
            me=data.getStringExtra("Obj");
        }
    Toast.makeText(getApplicationContext(),me,Toast.LENGTH_LONG).show();
}

B應用setResult數據

     Intent i=new Intent();
                i.putExtra("Obj", "object");
                setResult(Activity.RESULT_OK, i);
                finish();

曾經從 onActivityResult 重新運行空數據和結果代碼。 我們如何解決? 不可能從另一個應用程序 setREsult 獲取有關 AcitivityResult 的數據。 任何人都請幫助我。 非常感謝。

刪除finish()並在B像這樣調用:

@Override
public void onBackPressed() { 
    Intent data = new Intent();

    Bundle bundle = new Bundle();
    bundle.putString("Obj", "Obj_Data");
    data.putExtras(bundle);

    setResult(Activity.RESULT_OK, data);
    super.onBackPressed(); // this calls finish(); internally.
}

只需將此行添加到您的 manifest.xml

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
</intent-filter>

有關更多詳細信息,請查看此鏈接該鏈接解釋了如何從其他應用程序接收數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM