如何向其他Android应用程序请求信息?
问题描述:
我需要第三方应用程序(“富”),从我的应用程序(“酒吧”)获得的信息,但我的解决方案看似很远很麻烦:如何向其他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);
}
答
你应该揭露ContentProvider。
“内容提供商存储和检索数据并使其对所有应用程序访问他们要共享应用程序数据的唯一方法;没有共同的存储区域,所有Android包可以访问。”
内容提供者实现查询提供者和返回结果的通用接口。这并不难,但是官方文档可能不是最好的开始。你可以找到其他的例子:
谢谢,乐于助人 – orip 2011-10-25 13:48:26