2013-01-25 29 views
0

我需要以編程方式啓用GPS讓我用下面的代碼啓用GPS:權限被拒絕的異常,並同時打開GPS編程

  String provider = Settings.Secure.getString(getContentResolver(), 
       Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 

     if (!provider.contains("gps")) { // if gps is disabled 
      final Intent poke = new Intent(); 
      poke 
        .setClassName("com.android.settings", 
          "com.android.settings.widget.SettingsAppWidgetProvider"); 
      poke.addCategory(Intent.CATEGORY_ALTERNATIVE); 
      poke.setData(Uri.parse("3")); 
      sendBroadcast(poke); 

但是,當我用這個代碼,我得到了以下異常:

01-25 12:11:37.218: W/ActivityManager(477): Permission denied: checkComponentPermission() reqUid=1000 
    01-25 12:11:37.218: W/ActivityManager(477): Permission Denial: broadcasting Intent { cat=[android.intent.category.ALTERNATIVE] dat=3 cmp=com.android.settings/.widget.SettingsAppWidgetProvider } from com.gpstraking (pid=982, uid=10186) requires null due to receiver com.android.settings/com.android.settings.widget.SettingsAppWidgetProvider 

我必須給予什麼許可才能避免此異常並啓用GPS。

+0

哪個版本的設備,您正在使用? –

+0

http://stackoverflow.com/a/5305835/1395259 –

+0

我已經在Android 2.3和Android 4.0.1上測試過 –

回答

1

你有以下線在你的清單:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
+0

是的,我已經給了這個權限... –

0

一下添加到清單:

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"></uses-permission> 
+1

如果你已經這樣做了。用清單中添加的所有權限更新問題 –

+0

這還不夠。該應用程序必須是系統應用程序。它只能使用紮根設備完成。 – OGP

+0

權限僅授予系統應用程序; –

相關問題