スチールスプリントの5日目

1.先に話す

  今日は、許可の前にボックスを置き、許可を動的に申請する方法を学びます。

第二に、一般的な考え方

  以前は小さな本の経験があったので、今日は許可を申請する例を書いて、執筆の過程でインスピレーションを探します。

第三に、コード

  

パブリック クラス MainActivity  Activityを拡張してOnClickListenerを実装します
{
    プライベートボタンbut_old = null ;
    プライベートボタンbut_func = null ;
    プライベート ImageView iv_show = null ;


    プライベートボタンボタン;
    ArrayAdapter <String> アダプタ。
    リスト <String> contactList = new ArrayList <> ();
    プライベートListView ListView_ReadContact;


    @オーバーライド
    protected  void onCreate(Bundle savedInstanceState)
    {
        super .onCreate(savedInstanceState);
        // setContentView(R.layout.picture_tuise); 

        but_func = (ボタン)findViewById(R.id.btn_one);
        but_old = (Button)findViewById(R.id.btn_two);
        iv_show = (ImageView)findViewById(R.id.imgShow);

//         but_func.setOnClickListener(this);
//         but_old.setOnClickListener(this); 
        setContentView(R.layout.permission);
        ボタン = (ボタン)findViewById(R.id.Button);
        ListView_ReadContact = (ListView)findViewById(R.id.ListView_ReadContact);
        adapter = new ArrayAdapter <String>(this 、android.R.layout.simple_list_item_1、contactList);
        ListView_ReadContact.setAdapter(adapter);
        button.setOnClickListener(new View.OnClickListener(){
            @オーバーライド
            public  void onClick(View view){
 //                 if(ContextCompat.checkSelfPermission(MainActivity.this、Manifest.permission.CALL_PHONE)!=
 //                         PackageManager.PERMISSION_GRANTED){
 //                     ActivityCompat.requestPermissions(MainActivity.this、new String [] { Manifest.permission.CALL_PHONE
 //                     }、1);
//                 } else {
 //                     call();
//                 }

                もし(ContextCompat.checkSelfPermission(MainActivity。これ、Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){
                    ActivityCompat.requestPermissions(MainActivity。この新たな文字列[] {Manifest.permission.READ_CONTACTS}、1 );
                } その他{
                    連絡先は、read()は、
                }
            }
        });
    }


    public  void readContact(){
        カーソルcursor = null ;
        {を試す
            cursor = getContentResolver()。query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI、nullnullnullnull );
            if(cursor!= null ){
                 while (cursor.moveToNext()){
                     // 获取联系人姓名 
                    String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    String Num = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    contactList.add(displayName + "\ n" + Num);
                }
                adapter.notifyDataSetChanged();
            }
        } キャッチ(例外e){
            e.printStackTrace();
        } 最後に{
             if(cursor!= null ){
                cursor.close();
            }
        }

    }

    @オーバーライド
    public  void onRequestPermissionsResult(int requestCode、@NonNull String [] permissions、@NonNull int [] grantResults){
         switch (requestCode){
             case 1 if(grantResults.length> 0 && grantResults [0] == PackageManager.PERMISSION_GRANTED){
                    連絡先は、read()は、
                } その他{
                    Toast.makeText(this、 "権限がありません" 、Toast.LENGTH_SHORT).show();
                }
                休憩;
            デフォルト中断;
        }
    }

第四に、効果

 

 

おすすめ

転載: www.cnblogs.com/suanai/p/12753840.html