如何在不同的Android应用程序之间双向传递数据?

qef*_*zec 7 android android-intent android-activity

将字符串变量从一个应用程序传递到另一个应用程序并将值返回的最简单方法是什么?我可以访问这两个应用程序的源代码,但它必须是两个不同的应用程序.

我尝试使用startActivityForResult,但这似乎只适用于同一应用程序的活动.从另一个包调用活动时,startActivityForResult会立即返回RESULT_CANCELED.似乎有可能通过服务来解决这个问题,但是对于一些字符串变量而言,这不是有点过分吗?

有一个简单而干净的方法吗?

这里我尝试用于startActivityForResult的代码:

//App A:
            Intent intent = new Intent();
            intent.setAction("com.example.testapp.MESSAGE");
            Bundle b = new Bundle();
            b.putString("loginToken", "263bhqw3jhf6as4yf8j0agtz8h2hj2z9j3hg3g3ggh34uzh2h2ui78h3i9wdnj89x");
            intent.putExtra("MyData", b);

            startActivityForResult(intent, TEST_REQUEST);

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d("pairing", "onActivityResult called");
    // Check which request we're responding to
    if (requestCode == TEST_REQUEST) {
        // Make sure the request was successful
        Log.d("pairing", "got result, resultCode: " + resultCode);
        if (resultCode == RESULT_OK) {
            // The Intent's data Uri identifies which contact was selected.
            if (data.hasExtra("returnMessage")) {
                Toast.makeText(this, data.getExtras().getString("returnMessage"), Toast.LENGTH_LONG).show();
            }

        }
    }
}


            // App B:
        Intent result = new Intent();
        Bundle b = new Bundle();
        b.putString("returnValue", "this is the returned value");
        result.putExtra("MyData", b);
        setResult(Activity.RESULT_OK, result);
        Log.d("pairing", "RESULT_OK set");
        finish();


//App B Manifest
        <activity
        android:name="com.example.testapp"
        android:launchMode="singleTop"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan" >
        <intent-filter>
            <action android:name="com.example.testapp.MESSAGE" />

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

            <data android:mimeType="text/plain" />
        </intent-filter></activity>
Run Code Online (Sandbox Code Playgroud)

有谁看到这个错误?应用B始终使用RESULT_CANCELED立即返回

编辑:现在我得到一个android.content.activitynotfoundexception没有找到处理意图的活动{act = com.example.testapp.MESSAGE(has extras)}错误.我究竟做错了什么?

Ran*_*jit 1

你可以使用ContentProvider。这是比其他方法更好的方法。