在android应用程序以编程方式安装后,如何检测用户是否单击了“完成”或“打开”
我在检测用户是否点击了对话框时遇到了问题,该对话框通常在安卓应用程序安装后弹出。这样我就可以继续进行下一次安装或活动。您无法检测到 如果您想在应用程序的第一次运行时执行一些操作,那么只需在用户首选项中存储一个“first run”标志,并将其默认为true 然后,您可以在应用程序启动时对此进行检查,并执行任何必要的操作 这方面的一些示例代码在android应用程序以编程方式安装后,如何检测用户是否单击了“完成”或“打开”,android,file,apk,Android,File,Apk,我在检测用户是否点击了对话框时遇到了问题,该对话框通常在安卓应用程序安装后弹出。这样我就可以继续进行下一次安装或活动。您无法检测到 如果您想在应用程序的第一次运行时执行一些操作,那么只需在用户首选项中存储一个“first run”标志,并将其默认为true 然后,您可以在应用程序启动时对此进行检查,并执行任何必要的操作 这方面的一些示例代码 private boolean prefFirstRun; @Override public void onCreate(Bundle savedInst
private boolean prefFirstRun;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
settings = PreferenceManager.getDefaultSharedPreferences(this);
prefFirstRun= settings.getBoolean("FirstRun", true);
}
@Override
protected void onStart() {
super.onStart();
if (prefFirstRun) {
prefFirstRun = false;
// Do your initial operations here
}
}
@Override
protected void onStop() {
super.onStop();
SharedPreferences settings = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("FirstRun", false);
editor.commit();
}
如果我没弄错的话
- 您正在尝试以编程方式安装APK
- 成功安装后,您需要获取状态,无论用户按下按钮
还是Open
Done
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(
Uri.fromFile(new File("Full path to your APK")),
"application/vnd.android.package-archive"); // the APK path can be in SDCARD or in your application directory. I am sure you know this path.
// start the package-installer activity and wait for result. The second parameter can be used to identify the source of result in `onActivityResult` method.
startActivityForResult(intent, 1);
- 现在软件包安装程序将启动,您的APK将安装到设备上
- 用户按下
或Open
按钮Done
- 您可以在
回调函数中返回程序控件onActivityResult
函数:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// requestCode == 1 means the result for package-installer activity
if (requestCode == 1)
{
// resultCode == RESULT_CANCELED means user pressed `Done` button
if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "User pressed 'Done' button", Toast.LENGTH_SHORT).show();
}
else if (resultCode == RESULT_OK) {
// resultCode == RESULT_OK means user pressed `Open` button
Toast.makeText(this, "User pressed 'Open' button", Toast.LENGTH_SHORT).show();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
什么意思?我们这里说的是什么对话框?一个通知用户应用程序已安装的对话框,底部有两个按钮,“打开”和“完成”。我需要知道是否有一个按钮被点击了。你想怎么做才能不抓拍呢?它不属于您的进程…是的,这两个按钮中的任何一个,因为在安装第一个应用程序后,我必须安装剩余的apk文件。或者甚至如何至少隐藏它们。哦!我会试试这个,因为我也一直在想onActivityResult函数中的resultCode是什么。如果行得通,我会再打给你。谢谢我尝试了你的代码,但仍然不起作用,我相信它在安装应用程序之前的确认对话框中起作用,其中它要求你安装或不安装应用程序。但安装后不会。我是否应该在startActivityForResult()函数之后添加setresult(RESULT_OK)?您能否详细说明我将在何处继续第二个活动或第二次安装?在本例中,我已将第一次运行的检查放在onStart方法上,但您可以在应用程序中的任何位置执行此检查。要获得所需的结果,我把你的答案和上面的答案结合起来。我了解到,当活动完成时,会再次调用oncreate()函数,因此onActivityResult()函数无法正常工作。我尝试让onCreate()函数执行一次,然后继续在onActivityResult()函数中安装其余的apk