2010-09-06 93 views
2

我需要第三方应用程序(“富”),从我的应用程序(“酒吧”)获得的信息,但我的解决方案看似很远很麻烦:如何向其他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); 
} 
+0

谢谢,乐于助人 – orip 2011-10-25 13:48:26

回答

5

你应该揭露ContentProvider

内容提供商存储和检索数据并使其对所有应用程序访问他们要共享应用程序数据的唯一方法;没有共同的存储区域,所有Android包可以访问。”

内容提供者实现查询提供者和返回结果的通用接口。这并不难,但是官方文档可能不是最好的开始。你可以找到其他的例子:

+0

您也可以尝试使用服务。这取决于你想要存储/发送 – Falmarri 2010-09-06 10:04:06

+1

Falmarri:我仍然需要某种形式的RPC方法,对吧?我已经在服务中使用广播。 – neu242 2010-09-06 10:29:07

+0

如果您使用ContentProvider,则可以通过向ContentResolver请求给定的URI来查询所需的数据。我不明白为什么你需要在这里的RPC的东西。提供的内容是实现它的自然方式,IMO。 – 2010-09-06 10:32:52

相关问题