0

我試圖在ContentProvider中使用共享首選項..........似乎這是不可能的.......傳遞數據(字符串或整數)內容提供商在Android ..... SharedPreferences試過,但似乎無法訪問

但最後我想從My_Activity發送一個id(int或sting)到內容提供者爲我使用SharedP ......任何其他的替代方案

我打電話CP這樣

PackageManager pm = getPackageManager(); 
    if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) 
    { 
     Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     i.putExtra(MediaStore.EXTRA_OUTPUT,MyFileContentProvider.CONTENT_URI); 
     startActivityForResult(i, CAMERA_RESULT); 
    } 
    else 
    { 
     Toast.makeText(getBaseContext(), "Camera is not available", Toast.LENGTH_LONG).show(); 
    } 

回答

0

SharedPreferences的目的是存儲配置數據,這不是一個溝通渠道。

如果您想要通過的ID與要執行的操作相關,則可以使用Uri.Builder.appendQueryParameter(String, String)將其作爲查詢參數附加到您的Uri

您的代碼將是這樣的:

Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    i.putExtra(MediaStore.EXTRA_OUTPUT,MyFileContentProvider.CONTENT_URI 
    .buildUpon().appendQueryParameter("id", "123456").build()); 

所得Uri看起來就像這樣:

content://YOUR.AUTHORITY/YOUR/PATH?id=123456 

在你ContentProvider可以使用Uri.getQueryParameter(String)檢索參數值。

+0

謝謝你的回答....這一個是最好的內容提供商n將解決問題(我試過了)......保持簡單.....在我的問題,而不是ContentProvider我用intents和我的問題解決了... Cannt upvote作爲repo不是15在Stackoverflow .... :) – Ketan