AndroidのWeb Proxyの設定を実施したいと考え、試行錯誤しておりますが、
その中で以下のコードにて設定を行うことを試しています。
ContentResolver resolver = this.getContentResolver();
Settings.Secure.putString(resolver, Settings.Secure.HTTP_PROXY,
"xxx.xxx.xxx.xxx:80");
上記を実施したところ、以下のようにSecurityExceptionとなり更新が出来ません。
---- LogCatメッセージ
04-06 05:07:06.459: ERROR/DatabaseUtils(51): Writing exception to
parcel
04-06 05:07:06.459: ERROR/DatabaseUtils(51):
java.lang.SecurityException: Permission Denial: writing
com.android.providers.settings.SettingsProvider uri content://settings/secure
from pid=174, uid=10027 requires android.permission.WRITE_SETTINGS
04-06 05:07:06.459: ERROR/DatabaseUtils(51): at
android.content.ContentProvider
$Transport.enforceWritePermission(ContentProvider.java:276)
04-06 05:07:06.459: ERROR/DatabaseUtils(51): at
android.content.ContentProvider$Transport.insert(ContentProvider.java:
139)
04-06 05:07:06.459: ERROR/DatabaseUtils(51): at
android.content.ContentProviderNative.onTransact(ContentProviderNative.java:
125)
04-06 05:07:06.459: ERROR/DatabaseUtils(51): at
android.os.Binder.execTransact(Binder.java:287)
04-06 05:07:06.459: ERROR/DatabaseUtils(51): at
dalvik.system.NativeStart.run(Native Method)
---- LogCatメッセージ
他ページをみていると、API Level 3(Android 1.5)以降でセキュリティ制限されている?のような記述もありますが、上記の設定は
出来ないのでしょうか?
また、使用できない場合、同様のことが可能な方法はありませんでしょうか?
ログに答えが書いてあると思いますよ。
> requires android.permission.WRITE_SETTINGS
AndroidManifestファイルに、android.permission.WRITE_SETTINGS
パーミッションを追加してやってみて下さい。
/*********************************************
有限会社シーリス
代表 有山 圭二
@Address
〒530-0044
大阪市北区東天満二丁目2番5号
第2新興ビル6F
@Web http://www.c-lis.co.jp
*********************************************/
> -- このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
ご回答有難うございます。
山田@初心者です。
AndroidManifest.xmlに以下を追加したところエラーが無くなりました。
-- 追加
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
-- 追加
その後、android.permission.WRITE_SECURE_SETTINGSについても以下 同様のエラー
--- LogCatメッセージ
04-06 10:27:17.166: ERROR/DatabaseUtils(51): Writing exception to
parcel
04-06 10:27:17.166: ERROR/DatabaseUtils(51):
java.lang.SecurityException: Permission denial: writing to secure
settings requires android.permission.WRITE_SECURE_SETTINGS
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
com.android.providers.settings.SettingsProvider.checkWritePermissions(SettingsProvider.java:
172)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
com.android.providers.settings.SettingsProvider.insert(SettingsProvider.java:
335)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
android.content.ContentProvider$Transport.insert(ContentProvider.java:
140)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
android.content.ContentProviderNative.onTransact(ContentProviderNative.java:
125)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
android.os.Binder.execTransact(Binder.java:287)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
com.android.server.SystemServer.init1(Native Method)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
com.android.server.SystemServer.main(SystemServer.java:434)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
java.lang.reflect.Method.invokeNative(Native Method)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
java.lang.reflect.Method.invoke(Method.java:521)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:791)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
04-06 10:27:17.166: ERROR/DatabaseUtils(51): at
dalvik.system.NativeStart.main(Native Method)
--- LogCatメッセージ
が出力され、以下を追加したのですが、こちらの方のエラーは解消できませんでした。
-- 追加
<uses-permission
android:name="android.permission.WRITE_SECURE_SETTINGS" />
-- 追加
こちらは、記載方法が異なるのでしょうか?
誠にお手数ではありますが、ご教授 宜しくお願いします。
On 4月6日, 午後4:55, Keiji Ariyama <keiji_ariy...@c-lis.co.jp> wrote:
> 有山@大阪です。
>
> ログに答えが書いてあると思いますよ。
>
> > requires android.permission.WRITE_SETTINGS
>
> AndroidManifestファイルに、android.permission.WRITE_SETTINGS
> パーミッションを追加してやってみて下さい。
>
> /*********************************************
> 有限会社シーリス
> 代表 有山 圭二
> @Address
> 〒530-0044
> 大阪市北区東天満二丁目2番5号
> 第2新興ビル6F
> @Webhttp://www.c-lis.co.jp
> *********************************************/
>
>
>
> (2010/04/06 14:18), 山田@初心者 wrote:
> > いつも お世話になっております。
> > 山田@初心者です。
>
> > AndroidのWeb Proxyの設定を実施したいと考え、試行錯誤しておりますが、
> > その中で以下のコードにて設定を行うことを試しています。
> > ContentResolver resolver = this.getContentResolver();
> > Settings.Secure.putString(resolver, Settings.Secure.HTTP_PROXY,
> > "xxx.xxx.xxx.xxx:80");
>
> > 上記を実施したところ、以下のようにSecurityExceptionとなり更新が出来ません。
>
> > ---- LogCatメッセージ
> > 04-06 05:07:06.459: ERROR/DatabaseUtils(51): Writing exception to
> > parcel
> > 04-06 05:07:06.459: ERROR/DatabaseUtils(51):
> > java.lang.SecurityException: Permission Denial: writing
> > com.android.providers.settings.SettingsProvider uri content://settings/secure
> > from pid=174, uid=10027 requires android.permission.WRITE_SETTINGS
> > 04-06 05:07:06.459: ERROR/DatabaseUtils(51): at
> > android.content.ContentProvider
> > $Transport.enforceWritePermission(ContentProvider.java:276)
> > 04-06 05:07:06.459: ERROR/DatabaseUtils(51): at
> > android.content.ContentProvider$Transport.insert(ContentProvider.java:
> > 139)
> > 04-06 05:07:06.459: ERROR/DatabaseUtils(51): at
> > android.content.ContentProviderNative.onTransact(ContentProviderNative.java-:
> > 125)
> > 04-06 05:07:06.459: ERROR/DatabaseUtils(51): at
> > android.os.Binder.execTransact(Binder.java:287)
> > 04-06 05:07:06.459: ERROR/DatabaseUtils(51): at
> > dalvik.system.NativeStart.run(Native Method)
> > ---- LogCatメッセージ
>
> > 他ページをみていると、API Level 3(Android 1.5)以降でセキュリティ制限されている?のような記述もありますが、上記の設定は
> > 出来ないのでしょうか?
> > また、使用できない場合、同様のことが可能な方法はありませんでしょうか?
>
> > -- このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。このグループに投稿するには、android-g...@google-groups.com にメールを送信してください。このグループから退会するには、android-group-j...@googlegroups.c-om にメールを送信してください。詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
WRITE_SECURE_SETTINGパーミッションは、
・/frameworks/base/core/res/AndroidManifest.xml
で、以下のように定義されています。
<!-- Allows an application to read or write the secure system
settings. -->
<permission android:name="android.permission.WRITE_SECURE_SETTINGS"
android:protectionLevel="signatureOrSystem"
android:label="@string/permlab_writeSecureSettings"
android:description="@string/permdesc_writeSecureSettings" />
protectionLevelが"signatureOrSystem"と設定されています。
私の理解では、このレベルのパーミッションは、
・システムアプリ(設定アプリ、電話アプリなど)
・メーカー(or Google?)によって署名されたアプリ
に限り、許可されます。
また、上記に該当しない通常のサードパーティーアプリから、
"signatureOrSystem"レベルのパーミッションを必要とするAPIを呼び出すと、
SecurityExceptionが発生します。
山田さんのアプリが、通常のサードパーティーアプリを前提とされていますか?
そうであれば、HTTP_PROXYの書き換えは、不可能との認識です。
代替の方法が無いかとのご質問については、
わかりません。。
無理じゃないかなー、と思います。
以上
> > > -- このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。このグループに投稿するには、android-group-ja...@google-groups.com にメールを送信してください。このグループから退会するには、android-group-japan+unsubscr...@googlegroups.c-om にメールを送信してください。詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> > - 引用テキストを表示 -
山田@初心者です。
ご回答有難うございました。
了解しました。
> > > - 引用テキストを表示 -- 引用テキストを表示しない -
>
> - 引用テキストを表示 -