2017-06-07 4 views
0

私は、実行時のpermission.myコードの問題を抱えているのである。実行時アクセス許可に対するユーザーの応答まで、プログラムでどのように遅延することができますか?

 public class MainActivity extends AppCompatActivity { 
int i = 0; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE}; 
    ActivityCompat.requestPermissions(MainActivity.this, permissions, 0x3); 
    while (i == 0) { 
     // 
    } 
    // 
} 
@Override 
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case 0x3: 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       Toast.makeText(G.context, "allowed",Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(G.context, "deney", Toast.LENGTH_LONG).show(); 
      } 
      break; } }} 

私は、ユーザーの応答許可後whlieブロックの実行をしたいです。ブロックは許可の結果を待つことはありません。実行時パーミッションに対するユーザーの応答まで、そしてwhlieと別の行を実行した後、どのようにプログラムを遅らせることができますか?

+0

"実行時アクセス許可に対するユーザーの応答まで、そしてwhlieと別の行を実行した後、どのようにプログラムを遅らせることができますか?" - あなたはそうしない。あなたは 'onRequestPermissionResult()'で反応します。だから、あなたは何らかの方法でパーミッションを持っていれば、やりたいコードを分離することができます。すでに権限がある場合は 'onCreate()'から呼び出すか、権限を取得したら 'onRequestPermissionResult()'から呼び出してください。 – CommonsWare

答えて

0

onRequestPermissionResultメソッドの「許可」ケースの場合は、残りのコードを呼び出すだけで済みます。

if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
     Toast.makeText(G.context, "allowed",Toast.LENGTH_LONG).show(); 
     //The rest of your code 
} else { 
     Toast.makeText(G.context, "deney", Toast.LENGTH_LONG).show(); 
     //Ask again 
} 
関連する問題