Diskuze: Zobrazení jména učtu na zařízení: GET_ACCOUNTS permission v tlačítku

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Myslíš tadyto this?
AccountManager.get(this)
Jestli ano tak to nahraď
AccountManager.get(MainActivity.this)
... bere to ten listener a nejspíš to potřebuje context
Myslím to this co je v tom screenshotu hned nad tvým příspěvkem. Tedy ano
Neviem aké máš skúsenosti s programovaním, ale ak len začínaš možno
si si vybral trochu zložitejší cieľ
Ak sa pozrieš, ktorá začiatočná zátvorka ti svieti k tej koncovej na ktorej si s kurzom, zistíš že patrí k tomu View.OnClickListener, takže za tú koncovú ešte treba doplnit dve koncové zátvorky k tým dvom, ktoré ti ostávajú naľavo od toho new View.OnClickListener.
Myslím že jen jednu, nechci přece uzavřít celou Main activity. Mám tam
totiž ještě ty další funkce. Tu jednu za ní tam mám.
Teď to vypadá takto a stále je to podtržené:
package com.example.uzivatele;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.LinkedList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private Button button_contacts ;
private static final int ACCOUNT_PERMISSION_CODE = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkPermission(
Manifest.permission.GET_ACCOUNTS,
ACCOUNT_PERMISSION_CODE);
////
button_contacts = findViewById(R.id.button_get_names);
/// kód
button_contacts.setOnClickListener((new View.OnClickListener(){
@Override
public void onClick(View v){
AccountManager manager = AccountManager.get(MainActivity.this);
Account[] accounts = manager.getAccountsByType("com.google");
List<String> username = new LinkedList<>();
for (Account account : accounts) {
username.add(account.name);
}
TextView myoutput = findViewById(R.id.output_text);
myoutput.setText((CharSequence) username);
///
};
};
}
public void checkPermission(String permission, int requestCode)
{
if (ContextCompat.checkSelfPermission(MainActivity.this, permission)
== PackageManager.PERMISSION_DENIED) {
// Requesting the permission
ActivityCompat.requestPermissions(MainActivity.this,
new String[] { permission },
requestCode);
}
else {
Toast.makeText(MainActivity.this,
"Permission already granted",
Toast.LENGTH_SHORT)
.show();
}
}
public void onRequestPermissionsResult(int requestCode,
String[] permissions,
int[] grantResults)
{
super.onRequestPermissionsResult(requestCode,
permissions,
grantResults);
if (requestCode == ACCOUNT_PERMISSION_CODE) {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this,
"Accounts Permission Granted",
Toast.LENGTH_SHORT)
.show();
}
else {
Toast.makeText(MainActivity.this,
"Accounts Permission Denied",
Toast.LENGTH_SHORT)
.show();
}
}
}
}
Měl na mysli 2x klasickou závorku "))", jelikož máš před
new View.OnClickListener....
dvě závorky jedna je tam zbytečná.
Dobře, opraveno. I tak ale ta samá chyba. Jinak jsem si všiml, že hned tu
první závorku:
(new View.OnClickListener() nemám ukončenou ale ani nikde ukončit
nemůžu.
Co bych tedy ještě měl změnit?
button_contacts.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
AccountManager manager = AccountManager.get(MainActivity.this);
Account[] accounts = manager.getAccountsByType("com.google");
List<String> username = new LinkedList<>();
for (Account account : accounts) {
username.add(account.name);
}
TextView myoutput = findViewById(R.id.output_text);
myoutput.setText((CharSequence) username));
///
};
};
Nemáš to opraveno
button_contacts.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
AccountManager manager = AccountManager.get(MainActivity.this);
Account[] accounts = manager.getAccountsByType("com.google");
List<String> username = new LinkedList<>();
for (Account account : accounts) {
username.add(account.name);
}
TextView myoutput = findViewById(R.id.output_text);
myoutput.setText((CharSequence) username));
};
});
PS: Jak už bylo řečeno chybí ti základy, zkus něco lehčího.
Zobrazeno 11 zpráv z 11.