2010-09-06 72 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

相關問題