2011-12-14 26 views
6

Tôi muốn nhận dữ liệu từ db trình khởi chạy.phím tắt android, trình khởi chạy truy cập db

final String AUTHORITY = "com.android.launcher2.settings"; 
final Uri CONTENT_URI = Uri.parse("content://" + 
         AUTHORITY + "/favorites?notify=true"); 

Cursor c = contentResolver.query(uri, columns, null, null, 
      null); 

<uses-permission 
     android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> 
<uses-permission 
     android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/> 
<uses-permission 
     android:name="com.android.launcher.permission.READ_SETTINGS" /> 
<uses-permission 
     android:name="com.android.launcher.permission.WRITE_SETTINGS" /> 

nhưng nó nói rằng trong logcat:

Failed to find provider info for com.android.launcher2.settings 
+0

việc kiểm tra này: http://www.google.com/support/forum/p/android/thread?tid = 74f6668ec87004b5 & hl = vi –

Trả lời

8

Các launcher là một ứng dụng thuộc trách nhiệm sản xuất thiết bị cầm tay. Cơ quan sau đó không phải lúc nào cũng là "com.android.launcher2.settings". Nhà sản xuất thiết bị cầm tay có thể tự viết lại. Có thể là "com.android.twlauncher" hoặc bất kỳ thứ gì khác tùy thuộc vào gói Java.

Bạn cần truy xuất đúng thẩm quyền bằng cách tìm kiếm nhà cung cấp khai báo quyền đọc/ghi "com.android.launcher.permission.READ_SETTINGS" hoặc "com.android.launcher.permission.WRITE_SETTINGS".

Đây là một mẫu mã để làm điều đó:

static String getAuthorityFromPermission(Context context, String permission){ 
    if (permission == null) return null; 
    List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS); 
    if (packs != null) { 
     for (PackageInfo pack : packs) { 
      ProviderInfo[] providers = pack.providers; 
      if (providers != null) { 
       for (ProviderInfo provider : providers) { 
        if (permission.equals(provider.readPermission)) return provider.authority; 
        if (permission.equals(provider.writePermission)) return provider.authority; 
       } 
      } 
     } 
    } 
    return null; 
} 

Nói chung, cấu trúc DB ContentProvider và được giữ, và bạn có thể sử dụng các truy vấn tương tự.

+0

@ JacksOnF1re Điều này đã hoặc không thực hiện thủ thuật? – Corey

+0

@Có vẻ như điều này không giải quyết được vấn đề của tôi;) – JacksOnF1re

0

Đối với Nexus 5 thiết bị khác nhau cho phép tôi cần

<uses-permission android:name="com.google.android.launcher.permission.READ_SETTINGS"/> 
<uses-permission android:name="com.google.android.launcher.permission.WRITE_SETTINGS"/> 

chuỗi Authority là com.google.android.launcher.settings

Các vấn đề liên quan