2016-05-25 4 views
1

この単純なコードを使用して電話機のデータを取得していますが、何らかの理由でエミュレータでアプリを開くと、"Unfortunately *APP NAME* has closed"というメッセージが表示され、アプリがシャットダウンします。アンドロイドスタジオシミュレータでAndroid TelephonyManagerが動作しませんか?

これは私が使用していたコードです:

TelephonyManager tm=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
String IMEINumber=tm.getDeviceId(); 

私はコードがちょうどTelephonymanagerメソッドをテストすることを書きましたが、何も以外に動作しません: "getPhoneType();"

任意のアイデア問題何?それは私のアンドロイドスタジオエミュレータで実行しているためかもしれません?

それが言う問題:getDeviceId: Neither user 10058 nor current process has android.permission.READ_PHONE_STATE私はマニフェストにパーミッションを追加かかわら:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

(アプリケーション部分の上)

あなたはあなたの助け

+0

何か間違っていると推測するのではなく、エラーを見てください。 – JoxTraex

+0

@ JoxTraexあなたはもっと正しいです。 'getDeviceId:マニフェストのパーミッションを追加しましたが、ユーザー10058も現在のプロセスもandroid.permission.READ_PHONE_STATEはありません –

+0

あなたのアプリケーションを削除して再インストールしましたか?また、あなたがその許可を正しく綴っていることを確認してください。 – JoxTraex

答えて

3

をありがとうを実行していますAndroid M?その場合は、manifestpermissionsと宣言するだけでは不十分であるためです。いくつかのpermissionsについては、明示的にrun-timeでユーザーを聞いている:

Run time Permissionため、このLinkをチェックしてください。

コードスニペット。

ActivityにはGloballyを定義してください。

private static final int PERMISSION_REQUEST_CODE = 1; 

onCreateにこのようなものを行います。

// Here, thisActivity is the current activity 
if (ContextCompat.checkSelfPermission(TestingActivity.this, 
     Manifest.permission.READ_PHONE_STATE) 
     != PackageManager.PERMISSION_GRANTED) { 

    // Should we show an explanation? 
    if (ActivityCompat.shouldShowRequestPermissionRationale(TestingActivity.this, 
      Manifest.permission.READ_PHONE_STATE)) { 

     // Show an expanation to the user *asynchronously* -- don't block 
     // this thread waiting for the user's response! After the user 
     // sees the explanation, try again to request the permission. 

    } else { 

     // No explanation needed, we can request the permission. 

     ActivityCompat.requestPermissions(TestingActivity.this, 
       new String[]{Manifest.permission.READ_PHONE_STATE}, 
       PERMISSION_REQUEST_CODE); 

     // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an 
     // app-defined int constant. The callback method gets the 
     // result of the request. 
    } 
} 
最後に

overrride onRequestPermissionsResult

+0

ありがとうございます。私は例を理解するのに苦労していますが、これは問題だと思います。最高のコードスニペットを手助けすることができれば。 –

+0

@danijinji私の編集したコードスニペットの回答を確認してください:)。 –

関連する問題