我需要第三方應用程序(「富」),從我的應用程序(「酒吧」)獲得的信息,但我的解決方案看似很遠很麻煩:如何向其他Android應用程序請求信息?
- 應用美孚從酒吧需要的信息,併發送一個廣播(」 bar.POLL「)。
- 應用程序欄監聽此廣播,並用另一個廣播(「bar.PUSH」)回覆;
- Foo監聽bar.PUSH並讀取包含的Bundle的內容。
有沒有更直接的方法來做到這一點?
編輯:我有一個非常簡單的ContentProvider解決它爲Guido建議:
public class MyProvider extends ContentProvider {
private String state = "";
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
MatrixCursor cursor = new MatrixCursor(new String[]{"state"});
cursor.addRow(new Object[]{state});
return cursor;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
state = (String) values.get("state");
return 1;
}
@Override
public boolean onCreate() {
return true;
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
return null;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return 0;
}
}
記得將提供程序添加到清單:
<provider android:name=".MyProvider" android:authorities="com.example.hello" />
更新來自像一個活動的國家此:
ContentValues cv = new ContentValues();
cv.put("state", "myNewState");
getContext().getContentResolver().update(Uri.parse("content://com.example.hello"), cv, null, null);
從外部應用程序提供商3210
獲取內容:
Cursor cur = managedQuery(Uri.parse("content://com.example.hello"), null, null, null, null);
if (cur.moveToFirst()) {
String myContent = cur.getString(0);
}
謝謝,樂於助人 – orip 2011-10-25 13:48:26