Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android崩溃 – 无法获得提供商大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我不知所措.我一直在崩溃.之前曾问过类似的问题,但我没有犯同样的错误.这是我的清单:
    

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

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>

<application
    android:icon="@drawable/ic_launcher"
    android:label="@String/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".ReminderListActivity"
        android:label="@String/title_activity_reminder_list" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ReminderEditActivity"
        android:label="@String/title_activity_reminder_edit" >
    </activity>
    <provider 
        android:name=".ReminderListProvider" 
        android:authorities="com.corsair.android.taskreminder.ReminderListProvider" >            
    </provider>
</application>

如您所见,我拥有完全合格的权限.我在代码中声明了一个常量用于权限(并在我创建Uri时使用它:

public static final String AUTHORITY = "com.corsair.android.taskreminder.ReminderListProvider";

// basic database info for creation
public static final String DATABASE_NAME = "reminders.db";
public static final String DATABASE_TABLE_NAME = "reminders";
public static final int DATABASE_VERSION = 1;

private ReminderListProviderMetaData() {
}

// inner class describing the Reminders Table
// by implemenTing Basecolumns,we automatically get the _ID column
// which is necessary for showing the DB contents in a ListView
public static final class RemindersTableMetaData implements Basecolumns {
    private RemindersTableMetaData() {
    }

    public static final String table_NAME = "reminders";

    // uri and MIME type deFinitions
    // info for database access
    // the content URI is the authority prefixed with "content://"
    public static final String BASE_PATH = "reminders";
    public static final Uri CONTENT_URI = Uri.parse("content://"
            + AUTHORITY + "/" + BASE_PATH);

这是我的logcat:

08-01 18:11:10.111: I/dalvikvm(1150): threadid=3: reacTing to signal 3
    08-01 18:11:10.141: I/dalvikvm(1150): Wrote stack traces to '/data/anr/traces.txt'
    08-01 18:11:10.481: I/dalvikvm(1150): threadid=3: reacTing to signal 3
    08-01 18:11:10.694: I/dalvikvm(1150): Wrote stack traces to '/data/anr/traces.txt'
    08-01 18:11:11.951: I/Process(1150): Sending signal. PID: 1150 SIG: 9
    08-01 18:12:50.231: I/dalvikvm(1196): threadid=3: reacTing to signal 3
    08-01 18:12:50.661: I/dalvikvm(1196): Wrote stack traces to '/data/anr/traces.txt'
    08-01 18:12:50.671: I/dalvikvm(1196): threadid=3: reacTing to signal 3
    08-01 18:12:50.801: I/ActivityThread(1196): Pub                                 com.corsair.android.taskreminder.ReminderListProvider: com.corsair.android.taskreminder.ReminderListProvider
    08-01 18:12:50.833: D/ReminderProvider(1196): main oncreate called
    08-01 18:12:50.851: I/dalvikvm(1196): Wrote stack traces to '/data/anr/traces.txt'
    08-01 18:12:50.871: D/ReminderProvider(1196): inner oncreate called
    08-01 18:12:50.893: D/AndroidRuntime(1196): ShutTing down VM
    08-01 18:12:50.893: W/dalvikvm(1196): threadid=1: thread exiTing with uncaught exception (group=0x409c01f8)
    08-01 18:12:50.911: E/AndroidRuntime(1196): FATAL EXCEPTION: main
    08-01 18:12:50.911: E/AndroidRuntime(1196): java.lang.RuntimeException: Unable to get provider com.corsair.android.taskreminder.ReminderListProvider: java.lang.NullPointerException
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at android.app.ActivityThread.installProvider(ActivityThread.java:4240)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at android.app.ActivityThread.installContentProviders(ActivityThread.java:3992)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3946)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at android.app.ActivityThread.access$1300(ActivityThread.java:123)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1185)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at android.os.Handler.dispatchmessage(Handler.java:99)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at android.os.Looper.loop(Looper.java:137)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at android.app.ActivityThread.main(ActivityThread.java:4424)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at java.lang.reflect.Method.invokeNative(Native Method)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at java.lang.reflect.Method.invoke(Method.java:511)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at dalvik.system.NativeStart.main(Native Method)
    08-01 18:12:50.911: E/AndroidRuntime(1196): Caused by: java.lang.NullPointerException
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at com.corsair.android.taskreminder.ReminderListProvider$DatabaseHelper.onCreate(ReminderListProvider.java:75)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at com.corsair.android.taskreminder.ReminderListProvider.onCreate(ReminderListProvider.java:102)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at android.content.ContentProvider.attachInfo(ContentProvider.java:944)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     at android.app.ActivityThread.installProvider(ActivityThread.java:4237)
    08-01 18:12:50.911: E/AndroidRuntime(1196):     ... 12 more
    08-01 18:12:51.241: I/dalvikvm(1196): threadid=3: reacTing to signal 3
    08-01 18:12:51.291: I/dalvikvm(1196): Wrote stack traces to '/data/anr/traces.txt'
    08-01 18:12:51.541: I/dalvikvm(1196): threadid=3: reacTing to signal 3
    08-01 18:12:51.601: I/dalvikvm(1196): Wrote stack traces to '/data/anr/traces.txt'
    08-01 18:12:58.262: I/Process(1196): Sending signal. PID: 1196 SIG: 9

这是第75行(在logcat中引用):

@Override
public void onCreate(sqliteDatabase db) {
Log.d(tag,"inner oncreate called");
db.execsql(RemindersTableMetaData.database_CREATE_scheR_433_11845@A);
}

这是DATABASE_CREATE_scheR_433_11845@A:

public static final String DATABASE_CREATE_scheR_433_11845@A = "create table "
+ DATABASE_TABLE_NAME + " (" + RemindersTableMetaData._ID
+ " INTEGER PRIMary key autoincrement," + REMINDER_titlE
+ " text not null," + REMINDER_BODY + " text not null,"
+ REMINDER_DATE_TIME + " text not null" + ");";

这是我的ContentProvider的onCreate():

// database Helper member variable
private DatabaseHelper mOpenHelper;
private sqliteDatabase db;
// component creation callBACk
@Override
public Boolean onCreate() {
Log.d(tag,"main oncreate called");
mOpenHelper = new DatabaseHelper(getContext());
mOpenHelper.onCreate(db);
return true;
}

这是我的DataBaseHelper的构造函数

// this class Helps open,create,and upgrade the database
private static class DatabaseHelper extends sqliteOpenHelper {
public DatabaseHelper(Context context) {
super(context,ReminderListProviderMetaData.database_NAME,null,ReminderListProviderMetaData.database_VERSION);
}

真的在我的智慧结束这里.谢谢你的帮助.

解决方法

我想我在ContentProvider中看到了问题,我的评论详细说明了这些变化:

public Boolean onCreate() {
    Log.d(tag,"main oncreate called");
    mOpenHelper = new DatabaseHelper(getContext());

    /* Remove this line next line:
     *   1) db is null
     *   2) DatabaseHelper's constructor already silently calls this
     */
    //mOpenHelper.onCreate(db);

    return true;
}

大佬总结

以上是大佬教程为你收集整理的Android崩溃 – 无法获得提供商全部内容,希望文章能够帮你解决Android崩溃 – 无法获得提供商所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。