Show terms of service before install GSI/DSU

Test: settings->developer option->debug::DSU Loader
Bug: 144248769
Change-Id: Id5fa7f88544191736eb0c5db6334fd367c1be426
This commit is contained in:
Howard Chen
2019-12-02 15:34:58 +08:00
parent d5f3a0ca75
commit 60acb519c0
4 changed files with 136 additions and 7 deletions

View File

@@ -195,6 +195,7 @@ public class DSULoader extends ListActivity {
private static final String OS_VERSION = "os_version";
private static final String VNDK = "vndk";
private static final String PUBKEY = "pubkey";
private static final String TOS = "tos";
String mName = null;
String mDetails = null;
@@ -202,6 +203,7 @@ public class DSULoader extends ListActivity {
int mOsVersion = -1;
int[] mVndk = null;
String mPubKey = "";
URL mTosUrl = null;
URL mUri;
DSUPackage(JSONObject jsn) throws JSONException, MalformedURLException {
@@ -223,6 +225,9 @@ public class DSULoader extends ListActivity {
if (jsn.has(PUBKEY)) {
mPubKey = jsn.getString(PUBKEY);
}
if (jsn.has(TOS)) {
mTosUrl = new URL(jsn.getString(TOS));
}
}
int dessertNumber(String s, int base) {
@@ -318,10 +323,10 @@ public class DSULoader extends ListActivity {
Slog.e(TAG, e.toString());
return;
}
new Thread(new Fetcher(url)).start();
mAdapter = new DSUPackageListAdapter(this);
setListAdapter(mAdapter);
mAdapter.add(getResources().getString(R.string.dsu_loader_loading));
new Thread(new Fetcher(url)).start();
}
@Override
@@ -329,12 +334,25 @@ public class DSULoader extends ListActivity {
Object selected = mAdapter.getItem(position);
if (selected instanceof DSUPackage) {
DSUPackage dsu = (DSUPackage) selected;
Intent intent = new Intent();
intent.setClassName(
"com.android.dynsystem", "com.android.dynsystem.VerificationActivity");
intent.setData(Uri.parse(dsu.mUri.toString()));
intent.putExtra("KEY_PUBKEY", dsu.mPubKey);
startActivity(intent);
mAdapter.clear();
mAdapter.add(getResources().getString(R.string.dsu_loader_loading));
new Thread(new Runnable() {
public void run() {
String termsOfService = "";
if (dsu.mTosUrl != null) {
try {
termsOfService = readAll(dsu.mTosUrl);
} catch (IOException e) {
Slog.e(TAG, e.toString());
}
}
Intent intent = new Intent(DSULoader.this, DSUTermsOfServiceActivity.class);
intent.putExtra(DSUTermsOfServiceActivity.KEY_TOS, termsOfService);
intent.setData(Uri.parse(dsu.mUri.toString()));
intent.putExtra("KEY_PUBKEY", dsu.mPubKey);
startActivity(intent);
}
}).start();
}
finish();
}

View File

@@ -0,0 +1,63 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.development;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.android.settings.R;
/** Activity shows terms of service for a given DSU package */
public class DSUTermsOfServiceActivity extends Activity {
public static final String KEY_TOS = "KEY_TOS";
private void installDSU(Intent intent) {
intent.setClassName("com.android.dynsystem", "com.android.dynsystem.VerificationActivity");
startActivity(intent);
finish();
}
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.dsu_terms_of_service);
TextView tv = findViewById(R.id.tos_content);
Intent intent = getIntent();
if (!intent.hasExtra(KEY_TOS)) {
finish();
}
String tos = intent.getStringExtra(KEY_TOS);
if (TextUtils.isEmpty(tos)) {
installDSU(intent);
} else {
tv.setText(tos);
Button accept = findViewById(R.id.accept);
accept.setOnClickListener(
new Button.OnClickListener() {
@Override
public void onClick(View v) {
installDSU(intent);
}
});
}
}
}