1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 * except in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the 10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 11 * KIND, either express or implied. See the License for the specific language governing 12 * permissions and limitations under the License. 13 */ 14 15 package com.android.experimental.slicesapp; 16 17 import android.app.Activity; 18 import android.content.ContentResolver; 19 import android.content.Intent; 20 import android.content.SharedPreferences; 21 import android.content.pm.ApplicationInfo; 22 import android.net.Uri; 23 import android.os.Bundle; 24 import android.view.View; 25 import android.view.ViewGroup; 26 import android.widget.AdapterView; 27 import android.widget.AdapterView.OnItemSelectedListener; 28 import android.widget.ArrayAdapter; 29 import android.widget.CheckBox; 30 import android.widget.Spinner; 31 import android.widget.TextView; 32 import java.util.ArrayList; 33 import java.util.List; 34 35 public class SlicesActivity extends Activity { 36 37 private static final String TAG = "SlicesActivity"; 38 39 private int mState; 40 private ViewGroup mSlicePreviewFrame; 41 42 @Override onCreate(Bundle savedInstanceState)43 public void onCreate(Bundle savedInstanceState) { 44 super.onCreate(savedInstanceState); 45 SharedPreferences state = getSharedPreferences("slice", 0); 46 mState = 0; 47 if (state != null) { 48 mState = Integer.parseInt(state.getString(getUri().toString(), "0")); 49 } 50 setContentView(R.layout.activity_layout); 51 mSlicePreviewFrame = (ViewGroup) findViewById(R.id.slice_preview); 52 findViewById(R.id.subtract).setOnClickListener(v -> { 53 mState--; 54 state.edit().putString(getUri().toString(), String.valueOf(mState)).commit(); 55 updateState(); 56 getContentResolver().notifyChange(getUri(), null); 57 }); 58 findViewById(R.id.add).setOnClickListener(v -> { 59 mState++; 60 state.edit().putString(getUri().toString(), String.valueOf(mState)).commit(); 61 updateState(); 62 getContentResolver().notifyChange(getUri(), null); 63 }); 64 findViewById(R.id.auth).setOnClickListener(v -> { 65 List<ApplicationInfo> packages = getPackageManager().getInstalledApplications(0); 66 packages.forEach(info -> grantUriPermission(info.packageName, getUri(), 67 Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION 68 | Intent.FLAG_GRANT_WRITE_URI_PERMISSION)); 69 }); 70 71 Spinner spinner = findViewById(R.id.spinner); 72 List<String> list = new ArrayList<>(); 73 list.add("Default"); 74 list.add("Single-line"); 75 list.add("Single-line action"); 76 list.add("Two-line"); 77 list.add("Two-line action"); 78 list.add("Weather"); 79 list.add("Messaging"); 80 list.add("Keep actions"); 81 list.add("Maps multi"); 82 list.add("Settings"); 83 list.add("Settings content"); 84 ArrayAdapter<String> adapter = new ArrayAdapter<>(this, 85 android.R.layout.simple_spinner_item, list); 86 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 87 spinner.setAdapter(adapter); 88 spinner.setSelection(list.indexOf(state.getString("slice_type", "Default"))); 89 spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 90 @Override 91 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 92 state.edit().putString("slice_type", list.get(position)).commit(); 93 getContentResolver().notifyChange(getUri(), null); 94 updateSlice(getUri()); 95 } 96 97 @Override 98 public void onNothingSelected(AdapterView<?> parent) { 99 } 100 }); 101 102 bindCheckbox(R.id.header, state, "show_header"); 103 bindCheckbox(R.id.sub_header, state, "show_sub_header"); 104 bindCheckbox(R.id.show_action_row, state, "show_action_row"); 105 106 updateState(); 107 } 108 bindCheckbox(int id, SharedPreferences state, String key)109 private void bindCheckbox(int id, SharedPreferences state, String key) { 110 CheckBox checkbox = findViewById(id); 111 checkbox.setChecked(state.getBoolean(key, false)); 112 checkbox.setOnCheckedChangeListener((v, isChecked) -> { 113 state.edit().putBoolean(key, isChecked).commit(); 114 getContentResolver().notifyChange(getUri(), null); 115 updateSlice(getUri()); 116 }); 117 } 118 updateState()119 private void updateState() { 120 ((TextView) findViewById(R.id.summary)).setText(String.valueOf(mState)); 121 } 122 getUri()123 public Uri getUri() { 124 return new Uri.Builder() 125 .scheme(ContentResolver.SCHEME_CONTENT) 126 .authority(getPackageName()) 127 .appendPath("main").build(); 128 } 129 updateSlice(Uri uri)130 private void updateSlice(Uri uri) { 131 } 132 } 133