1

ユーザーがダイアログをクリックしたかどうかを検出するのに問題があります。これは通常、Android アプリケーションがインストールされた後にポップアップします。次のインストールまたはアクティビティに進むことができるように。

4

2 に答える 2

2

You can't detect that.

If you are wanting to do some operation on the first run of the application then just store a "first run" flag within your user preferences and default it to true.

You can then check this on start of your app and perform any necessary operations.

Some example code for this;

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();

}
于 2012-09-13T10:04:17.540 に答える
0

私があなたを正しく得るならば、

  • プログラムで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コールバック関数に戻します

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);
}
于 2012-09-13T11:14:10.397 に答える