補充什麼@Cris Nash回答:
你需要覆蓋的方法,如上面的例子類:
package com.android.example;
import android.content.ContentProvider;
import android.net.Uri;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import java.io.FileNotFoundException;
import android.content.ContentValues;
import android.database.Cursor;
import java.io.IOException;
import android.os.CancellationSignal;
public class AssetsProvider extends ContentProvider
{
@Override
public AssetFileDescriptor openAssetFile(Uri uri, String mode) throws FileNotFoundException
{
Log.v(TAG, "AssetsGetter: Open asset file");
AssetManager am = getContext().getAssets();
String file_name = uri.getLastPathSegment();
if(file_name == null)
throw new FileNotFoundException();
AssetFileDescriptor afd = null;
try
{
afd = am.openFd(file_name);
}
catch(IOException e)
{
e.printStackTrace();
}
return afd;//super.openAssetFile(uri, mode);
}
@Override
public String getType(Uri p1)
{
// TODO: Implement this method
return null;
}
@Override
public int delete(Uri p1, String p2, String[] p3)
{
// TODO: Implement this method
return 0;
}
@Override
public Cursor query(Uri p1, String[] p2, String p3, String[] p4, String p5)
{
// TODO: Implement this method
return null;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder, CancellationSignal cancellationSignal)
{
// TODO: Implement this method
return super.query(uri, projection, selection, selectionArgs, sortOrder, cancellationSignal);
}
@Override
public Uri insert(Uri p1, ContentValues p2)
{
// TODO: Implement this method
return null;
}
@Override
public boolean onCreate()
{
// TODO: Implement this method
return false;
}
@Override
public int update(Uri p1, ContentValues p2, String p3, String[] p4)
{
// TODO: Implement this method
return 0;
}
}
我需要重寫兩次查詢方法。 而在你的AndroidManifest.xml中添加上述代碼中添加以下行:
<provider
android:name="com.android.example.AssetsProvider"
android:authorities="com.android.example"
android:grantUriPermissions="true"
android:exported="true" />
而與此,有魅力的所有工作:d
你能給我一個例子如何從資源共享可繪製文件夾中的圖像? – 2011-05-04 19:30:46
格式爲:'android.resource:// [package]/[type]/[id]'。所以,一個URI例子是:''android.resource://com.your.app/drawable/「+ Integer.toStrng(R.drawable.some_resource)'。 – Michael 2011-05-04 19:37:16
我試過使用 share.putExtra(Intent.EXTRA_STREAM,Uri.parse(「android.resource://com.packake.myapp/drawable/」+ Integer.toString(R.drawable.myimage)));它可以與gmail共享,但當試圖與yahoo郵件共享時,我會收到消息「讀訪問被拒絕,資源無法讀取」。你有什麼想法爲什麼? – 2011-05-04 19:49:36