2016-11-06 9 views
-1

私は公開アンドロイドメソッドgetSSID()をbashスクリプトから呼び出そうとしていますか?私の目的は、Androidデバイスの現在接続されているSSIDをbash変数に戻すことです。bashスクリプトは、アクティビティーマネージャーを使用して公式アンドロイドAPIメソッドを呼び出す(am)

要件:

  • 機能で焼いただけのAndroidを使用する必要があり、root以外のユーザー
  • として実行する必要があります。
  • AKAは追加アプリが
  • は、簡単なbashスクリプトから直接実行する必要がありますインストールされていないが必要です。以前

: 私は私が必要なものを取得するためにはgrepでdumpsysコマンドを使用していたが、今それは私がこれが機能するためにrootになる必要があるので、私はこのコンセプトの代替を探していそうです。

$ dumpsys wifi | grep -i $grepwifi 

だから私は...このパブリックAPIを見つけ

https://developer.android.com/reference/android/net/wifi/WifiInfo.html

しかし、私はそれが動作するように取得する方法を見つけ出すことができないのです。私は幸運なしで下記のようないくつかのオプションを試してみました。

$ am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiInfo.getSSID() 
/system/bin/sh: syntax error: '(' unexpected 

それとも

$ am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiInfo.getSSID 
Starting: Intent { act=android.intent.action.MAIN cmp=com.android.settings/.wifi.WifiInfo.getSSID } 
Error type 3 
Error: Activity class {com.android.settings/com.android.settings.wifi.WifiInfo.getSSID} does not exist. 

私は単純に一緒に正しくURLを入れておりませんと仮定しています。だから私は、誰かが私にこれらのコマンドがどのように構造化されていて、一度私が他の公開APIを探求し続けることができるように構造化できるのかを私に指摘してくれることを期待している。どのような選択肢にも感謝してください。あなたがdumpsysを使用することはできませんデバイスとAndroid版であるすべての

+0

'am start'は、あなたが試しているメソッド名ではなく、コマンドラインでインテントを受け入れます。 –

+0

お返事ありがとうございます。ここに私が働くことができたという例があります。 adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings – Steve

+0

これはメソッドではありません。コンポーネント(pkg + activity) –

答えて

0

まず、?

とにかく、AndroidViewClient/culebraを使用してdumpsysを必要としない方法を示します。

を使用してスクリプトを生成し、必要に応じて少し修正することができます。オープンクイック設定、その後、必要に応じていないものを削除する任意のSSID(あなたが見ているものではないだけに)一致する正規表現を追加し、この

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
''' 
Copyright (C) 2013-2016 Diego Torres Milano 
Created on 2016-11-09 by Culebra v12.4.0 
         __ __ __ __ 
        /\/\/\/\ 
____________________/ __\/ __\/ __\/ __\_____________________________ 
___________________/ /__/ /__/ /__/ /________________________________ 
        |/\ /\ /\ /\ \___ 
        |/ \_/ \_/ \_/ \ o \ 
              \_____/--< 
@author: Diego Torres Milano 
@author: Jennifer E. Swofford (ascii art snake) 
''' 


import re 
import sys 
import os 

from com.dtmilano.android.viewclient import ViewClient 

TAG = 'CULEBRA' 

_s = 5 
_v = '--verbose' in sys.argv 


kwargs1 = {'ignoreversioncheck': False, 'verbose': False, 'ignoresecuredevice': False} 
device, serialno = ViewClient.connectToDeviceOrExit(**kwargs1) 
kwargs2 = {'forceviewserveruse': False, 'useuiautomatorhelper': False, 'ignoreuiautomatorkilled': True, 'autodump': False, 'startviewserver': True, 'compresseddump': True} 
vc = ViewClient(device, serialno, **kwargs2) 


vc.uiDevice.openQuickSettings() 
vc.sleep(_s) 

vc.dump(window='-1') 
print vc.findViewWithContentDescriptionOrRaise(re.compile(u'''Connected to .*''')).getContentDescription() 

のようなものを持っている必要があり

culebra -r -d true -t false -i false -o ssid.py 

を実行しますまたは、好きな場合はCulebra GUIを使用し、UIでこれを実行できます。

+0

私がテストしたほぼすべてのデバイスで、dumpsysの非ルート使用に関して同じ動作が見られました。今日は私が狂っていないことを確認するために、私は3つの異なる電話を試しました。 Android 2.3.7,4.1.2、および6.0.1。 rootとして実行しない限り、すべての3人がコマンドに "permission denial"を取得します。 '$ dumpsys wifi' これは誰にも珍しいものですか?私はそれがかなり典型的であると仮定していた。 提案されたソリューションをありがとうございますが、これが私にとってうまくいかない理由はいくつかあります。アンドロイド上のpythonはリストの一番上にあります。私の3台の電話機のどれもデフォルトではPythonスクリプトを実行することはできません。 – Steve

+0

知っているより直接的な方法はありますか? – Steve

+0

pythonはあなたのコンピュータではなくあなたのコンピュータで実行されます。これはおそらく 'dumpsys'がうまくいかない理由、' adb'が必要な理由です。 –

関連する問題