您可以使用带有参数的“adb shell am start”来启动新安装的软件包。
如果担心不会被旧的混淆,请在安装新的之前先卸载旧的,或者最好让您的启动活动显示版本控制。
您实际上可以使用 am start 来启动启动器不知道的活动,因此您可以使用它直接启动到将显示当前版本的“关于”活动。您的选择是在应用程序的普通过程中提供它,还是仅将它用作一次启动。
您还应该能够解析 adb install 命令的输出 - 您必须查看它是否将错误/成功发送到 stderr 或 stdout。
更新:这里是如何制作一个活动,您可以使用它来打开屏幕并显示一条消息,如下所示:
adb shell 'am start -n com.example.testreport/.ReportActivity -e result PASS'
该代码大量抄录自早期 android 版本的内置 AlarmClock,它将需要:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
在清单中
package com.example.testreport;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.PowerManager;
import android.util.Log;
import android.view.Gravity;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.TextView;
public class ReportActivity extends Activity {
PowerManager.WakeLock sScreenWakeLock;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(android.view.Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}
protected void onStart() {
super.onStart();
if (sScreenWakeLock == null) {
PowerManager pm =
(PowerManager) getSystemService(Context.POWER_SERVICE);
sScreenWakeLock = pm.newWakeLock(
PowerManager.FULL_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.ON_AFTER_RELEASE, "ReportActivity Wakelock");
sScreenWakeLock.acquire();
}
TextView tv=new TextView(this);
tv.setTextSize(30);
tv.setGravity(Gravity.CENTER);
Intent i = getIntent();
if ((i != null) && (i.hasExtra("result")))
tv.setText(i.getStringExtra("result"));
else
tv.setText("???");
setContentView(tv);
}
protected void onStop() {
if (sScreenWakeLock != null) {
sScreenWakeLock.release();
sScreenWakeLock = null;
}
super.onStop();
}
}
它可能需要一些清理和改进;例如,目前您无法使用电源按钮关闭手机,除非您首先通过导航使其失去可见性来停止活动。