Какой самый простой способ для передать переменные строки из одного приложения в другое, а также вернуть значения обратно? У меня есть доступ к исходному коду обоих приложений, но это должно быть два разных приложения.Как передавать данные между различными приложениями Android?
Я попытался с 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>
Кто-нибудь видел ошибку? App B всегда возвращается немедленно RESULT_CANCELED
EDIT: Прямо сейчас я не буду получать android.content.activitynotfoundexception никакой активности найдено обрабатывать намерение {акт = com.example.testapp.MESSAGE (имеет дополнительные услуги)} ошибка , Что я делаю не так?
вы можете разместить код двух видов деятельности? –
startActivityForResult должен работать ... Проблема, кажется, в вашем коде – Selvin
Мне кажется, что это невозможно с startActivityForResult(). Он работает между действиями одного и того же приложения, даже с разными пакетами, но не с двумя разными Приложениями. См. [Link] (http: // stackoverflow.com/questions/11919259/how-to-get-startactivityforresult-on-external-activity-to-work) – qefzec