0

アプリの開発テスト中に、まったく同じコード ベースの新しいビルド (ビルド 2.0) が突然デフォルトのアクセス許可 (キャリア インターネット、GPS) をインストール時に許可するのではなくプロンプトにするという奇妙な問題に遭遇しました。

詳細 -- 同じコード ベース
したがって、同じコード ベースを持つ 2 つのビルドが存在します。Build 1.0 は先週作成/署名されました。ビルド 2.0 は昨日作成/署名されました。Build 1.0 をインストールすると、初期パーミッション (すべて許可) に問題はありません。ただし、Build 2.0 のインストールでは、同じ権限 (キャリア インターネット、GPS) が Prompt に設定されます。

質問
アプリは gps とデータのリクエストを行い、一部の電話構成ではアクセス許可を設定する必要があることは理解していますが、以前はアクセス許可を必要としなかったビルド (ビルド 1.0) が突然アクセス許可を必要とするのはなぜですか (ビルド 2.0)?

私のプロジェクト/ビルド設定に関係している可能性があると思いますが、何がわかりません。助言がありますか?

4

1 に答える 1

3

ファイアウォールをオンにするなど、デバイスで 1.0 から 2.0 の間でこれを引き起こす何かを行った可能性はありますか?

私の知る限り、アプリのアクセス許可を設定またはクエリするために、ビルド、ダウンロード、またはインストール時にできることは何もありません。アプリのアクセス許可に対するクエリまたは変更の要求を制御できるようになる前に、実際に実行されるまで待つ必要があります。

アプリケーションの初期化に次のコード スニペットを挿入して、設定が実際にどのように設定されているかを確認してみてください。

ApplicationPermissionsManager apm = ApplicationPermissionsManager.getInstance();
ApplicationPermissions permissions = apm.getApplicationPermissions();
int[] keys = permissions.getPermissionKeys();
for (int i = 0; i < keys.length; i++) {
    int key = keys[i];
    System.out.println("APM: " + key + " = " +
        permissionToString(permissions.getPermission(key)));
}

と:

public String permissionToString(int value) {
    switch(value) {
        case ApplicationPermissions.VALUE_ALLOW:
            return "ALLOW";
        case ApplicationPermissions.VALUE_PROMPT:
            return "PROMPT";
        case ApplicationPermissions.VALUE_DENY:
            return "DENY";
        case -1:
            return "NOT_SET";
        default:
            return Integer.toString(value);
    }
}

JDE サンプル ディレクトリの「applicationpermissionsdemo」プログラムには、アプリのアクセス許可を照会し、アプリ自体からアプリのアクセス許可の変更を要求する良い例があります。

于 2009-06-27T05:42:41.937 に答える