I'm stepping through "Professional Android 4 Application
Development".  I'm attempting to enter most of the code samples by
hand, but I'm deploying the provided downloaded apps if what I've
entered doesn't match what I expect.

I'm on chapter 14, the 3rd iteration of the "Earthquake" example,
which adds a list widget.  The regular widget works fine, but when I
try to place the list widget on the homescreen, I get the following:

FATAL EXCEPTION: Binder Thread #2
java.lang.SecurityException: Permission Denial: reading
com.example.earthquake.EarthquakeProvider uri
content://com.example.earthquakeprovider/earthquakes from pid=806,
uid=10001 requires null
        at android.content.ContentProvider
$Transport.enforceReadPermission(ContentProvider.java:295)
        at android.content.ContentProvider
$Transport.query(ContentProvider.java:177)

When I install the corresponding app version from the code download,
it works fine.  I must be missing a small detail, but I don't see it.
I've carefully compared the differences between the manifest files,
but I don't see anything that's obviously relevant.

If it matters, here is my entire app manifest.  The only permission
entry relevant to the list widget is "BIND_REMOTEVIEWS", but the code
sample has the same thing.

-----------------------------------------
<manifest xmlns:android="http://schemas.android.com/apk/res/android";
    package="com.example.earthquake"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="14"
android:targetSdkVersion="15" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <application android:icon="@drawable/ic_launcher"
android:label="@string/app_name" android:theme="@style/AppTheme" >
        <meta-data android:name="android.app.default_searchable"
android:value=".EarthquakeSearchResults" />

        <uses-library android:name="com.google.android.maps" />

        <activity android:name=".Earthquake" android:label="@string/
title_activity_earthquake"
android:uiOptions="splitActionBarWhenNarrow" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category
android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".PreferencesActivity"
android:label="@string/title_activity_preferences" />
        <activity android:name=".FragmentPreferences" />
        <activity android:name=".EarthquakeSearchResults"
android:exported="false" android:label="@string/search_description"
            android:launchMode="singleTop" >
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
                <category
android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
        </activity>
        <provider android:name=".EarthquakeProvider"
android:authorities="com.example.earthquakeprovider"
android:exported="false" />
        <service android:name=".EarthquakeUpdateService"
android:enabled="true" />
        <receiver android:name=".EarthquakeAlarmReceiver"
android:exported="false" >
            <intent-filter>
                <action
android:name="com.example.earthquake.ACTION_REFRESH_EARTHQUAKE_ALARM" /
>
            </intent-filter>
        </receiver>
        <receiver android:name=".EarthquakeWidget"
android:label="Earthquake" >
            <intent-filter>
                <action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <intent-filter>
                <action
android:name="com.example.earthquake.QUAKES_REFRESHED" />
            </intent-filter>
            <meta-data android:name="android.appwidget.provider"
android:resource="@xml/quake_widget_info" />
        </receiver>
        <receiver android:name=".EarthquakeListWidget"
android:label="Earthquake List" >
            <intent-filter>
                <action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data android:name="android.appwidget.provider"
android:resource="@xml/quake_list_widget_info" />
        </receiver>
        <service android:name=".EarthquakeRemoteViewsService"
android:permission="android.permission.BIND_REMOTEVIEWS"/>
    </application>
</manifest>
-------------------------

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to