获取“java.lang.IllegalArgumentException:Android中的未知URL内容”

时间:2013-09-27 07:34:07

标签: android exception

我在下面的android代码中收到了未知的URL异常“java.lang.IllegalArgumentException:未知的URL内容://com.abcd/metertable”,这可能是什么原因。有人可以帮忙,提前致谢:

java.lang.IllegalArgumentException: Unknown URL content://com.abcd/table
at android.content.ContentResolver.delete(ContentResolver.java:955)
at com.abcd.Class.mymethod(Class.java:536)
at com.abcd.Class.access$8(Class.java:530)
at com.abcd.Class$MeterTask.onPostExecute(Class.java:290)
at com.abcd.Class$MeterTask.onPostExecute(Class.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4849)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
at dalvik.system.NativeStart.main(Native Method)

提供者:

<provider android:name="com.abcd.meters.Class2"
              android:authorities="com.abcd.myclass">
</provider>

代码:

private void mymethod()
    {
        ContentResolver crol = context.getContentResolver();
        int rows = crol.delete(MyClass.CONTENT_URI, MyClass.MARK_FOR_DELETE + "=1", null);
        Log.d(TAG, rows + " rows deleted");
        // Count records to upload

    }

URI:

public static final String PACKAGE = "com.abcd";
public static final String TABLE = "table";
public static final Uri CONTENT_URI = Uri.parse("content://"+ PACKAGE + "/" + TABLE);

2 个答案:

答案 0 :(得分:3)

android:authorities不应该是您定义的类,而是uri权限。它应该是这样的:

<provider android:name="com.abcd.meters.myclass"
          android:authorities="com.abcd">
</provider>

答案 1 :(得分:1)

错误表明您正在尝试访问content://com.abcd/metertable,其中“权限”为“com.abcd”。

AndroidManifest提供程序标记仅定义了“com.abcd.myclass”的权限。

如果您匹配这些,那么提供商将会工作。