[解決済み] AndroidでプログラムによりGPSを有効または無効にするにはどうすればよいですか?
2022-04-23 06:19:42
質問
アンドロイドでプログラム的にGPSをON/OFFすることについての質問ですが があります。 されている 議論 たくさん 回 そして、その答えはいつも同じです。
位置情報設定画面に転送して、ユーザーが有効化/無効化できるようにする必要があります。
それはわかるのですが、最近買った タスカー このアプリケーションでは、あらかじめ設定したアプリケーションに入るとGPSが自動的に有効になり、終了すると無効になるようにルールを設定することができます ( こちら このアプリは、多くのアンドロイドバージョンと異なるデバイスで動作するため、ファームウェア署名キーで署名することができず、ルート化も必要ありません。
自分のアプリでやってみたい。もちろん、ユーザーのプライバシーを吹き飛ばしたくないので、まず、典型的な "remember my decision" チェックボックスで自動的にオンにするかどうかをユーザーに尋ね、イエスと答えたら、有効にすることにします。
どなたか、Taskerがどのようにこれを実現しているか、アイデアや手がかりをお持ちの方はいらっしゃいますか?
どのように解決するのですか?
GPSの切り替えは 搾取 パワーマネージャのウィジェットのバグです。 xdaスレッド をご覧ください。
私が使っているコードの例です。
private void turnGPSOn(){
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);
}
}
private void turnGPSOff(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(provider.contains("gps")){ //if gps is enabled
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);
}
}
を使用して、既存の電源制御ウィジェットのバージョンが、gpsを切り替えられるものであるかどうかをテストしてください。
private boolean canToggleGPS() {
PackageManager pacman = getPackageManager();
PackageInfo pacInfo = null;
try {
pacInfo = pacman.getPackageInfo("com.android.settings", PackageManager.GET_RECEIVERS);
} catch (NameNotFoundException e) {
return false; //package not found
}
if(pacInfo != null){
for(ActivityInfo actInfo : pacInfo.receivers){
//test if recevier is exported. if so, we can toggle GPS.
if(actInfo.name.equals("com.android.settings.widget.SettingsAppWidgetProvider") && actInfo.exported){
return true;
}
}
}
return false; //default
}
関連
-
AndroidStudio3.0 Error:Execution failed for task ':app:processDebugResources'.
-
Android Nで報告されたエラーを解決する: android.os.FileUriExposedException: file:///storage/emulated/0/
-
Androidプロセス生存のためのソリューション
-
アプリの実行エラー。ターゲットデバイスが見つからない問題
-
Android Studio http://schemas.android.com/apk/res/android 「URIが登録されていません」の解決方法について
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidのランドスケープモードを無効にする方法を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Android端末にADBが接続できない!を解決。理由: デバイスが認証されていない!
-
AndroidエミュレーターのADBサーバーがACKしない問題
-
gitlab 設定エラー。リモートリポジトリから読み込めなかったか、ホストキーの検証に失敗しました。
-
デフォルトのアクティビティが見つからない場合の対処法
-
Error:A problem occurred configuring project ':app'. > ビルドを見つけられませんでした。
-
Android TextViewにandroid:ellipsize=endのバグがある。
-
ConstraintLayoutのいくつかのプロパティの概要(RelativeLayoutの強化版、LinearLayoutの比例プロパティを含む、階層ツールの削減)。
-
Android ProgressBarのスタイルカラーを変更する
-
android bluetooth--Bluetooth on、検索、ペアリング、接続
-
Android基本アプレット