我最初的問題是能夠點擊在文本字段上進行點擊時彈出的「粘貼」氣泡。目前我還沒有找到一種方法來使用uiautomator腳本/代碼來執行該操作。所以我開始考慮直接訪問剪貼板。現在我遇到了訪問android設備上剪貼板的問題。我們沒有使用應用程序(apk),而是將jar推送到設備,然後使用adb runtest來運行這些類。所以沒有任何活動正在開始。我猜這是我所有的問題都來自於。我創建了一個我稱之爲試圖訪問剪貼板的類文件。但是,我目前正在收到此錯誤消息「java.lang.IllegalStateException:系統服務不可用於onCreate()之前的活動」。我是android和uiautomator的新手。在哪裏/如何將onCreate()添加到此代碼中。我知道我們使用的過程最好是奇怪的。值得讚賞的是,使用uiautomator點擊「PASTE」泡泡或獲得課程的幫助。 我在幾個區域嘗試了onCreate(),正如你所看到的,但目前爲止還沒有運氣。如何訪問Android設備上的剪貼板
這裏是我的班至今:
import android.app.Activity;
import android.content.*;
import android.os.AsyncTask;
public class MyClipBoard extends Activity {
public String clip;
MyClipBoard() {
super.onCreate(null);
}
public void getClipBoard(){
new GetClipBoard().execute();
}
private class GetClipBoard extends AsyncTask<Void, Void, String> {
private String pMyClip;
@Override
protected String doInBackground(Void...params) {
try {
onCreate(null);
// ClipboardManager p = params[0];
String pasteData = "";
ClipboardManager myClipBoard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData.Item myClip = myClipBoard.getPrimaryClip().getItemAt(0);
CreateDeviceInfoFile.createInfoFile("Data from ClipBoard:", myClip.toString());
CreateDeviceInfoFile.createInfoFile("Number of Items:", String.valueOf(myClipBoard.getPrimaryClip().getItemCount()));
pMyClip = myClip.toString();
}catch (Exception e){
CreateDeviceInfoFile.createInfoFile("ERROR",e.toString());
}
// Gets the clipboard as text.
return pMyClip;
}
@Override
protected void onPostExecute(String result) {
clip = result;
CreateDeviceInfoFile.createInfoFile("Data from PostExecute:", result);
}
}
}
---------Edited added class-------------------
public class MiApp extends Application {
public MiClipBoard newBoard;
private static Context appContext;
MiApp(){
this.onCreate();
Looper.prepare();
newBoard = new MiClipBoard();
}
public MiClipBoard appClipBoard(){
return newBoard;
}
@Override
public void onCreate(){
super.onCreate();
}
public static Context getContext(){
return appContext.getApplicationContext();
}
}
public class MiClipBoard extends Activity {
private ClipboardManager clipboard;
MiClipBoard(){
Context context = MiApp.getContext();
clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
}
public void writeToClipBoard(String clipText){
try {
ClipData clip = ClipData.newPlainText("simple text", "Hello, World!");
clipboard.setPrimaryClip(clip);
CreateDeviceInfoFile.createInfoFile("Writing to ClipBoard", "Hello World");
} catch (Exception e){
CreateDeviceInfoFile.createInfoFile("Write Error", e.toString());
}
}
public void readClipBoard(){
String pasteData = "";
try {
ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
pasteData = item.getText().toString();
CreateDeviceInfoFile.createInfoFile("From ClipBoard", pasteData);
} catch (Exception e){
CreateDeviceInfoFile.createInfoFile("Read Error", e.toString());
}
}
}
也許它會工作,如果你調用getApplicationContext()。getSystemService(),而不是? – geokavel
這讓我有同樣的錯誤。 – user2998147