2017-07-25 6 views
0

Android: TelephonyManager classから同じ問題についてこの回答に従おうとしていますが、Advisedとして行うと、静的コンテキストでgetSystemサービスを使用できなくなります。私は非静的コンテキストでこれをどのように行うのですJava APK非静的使用

public class MainActivity extends Activity { 
    @Override 
    @TargetApi(26) 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     TextView text = new TextView(this); 
     TelephonyManager device = Context.getSystemService(Context.TELEPHONY_SERVICE); 
     String IMEI = device.getImei(); 

私は

TelephonyManager device = new TelephonyManager(Context.getSystemService(Context.TELEPHONY_SERVICE)); 

それdidntの作業を行うことができると思った、と私はまだ「静的コンテキストエラーでgetSystemServiceを使用することができません」でした。どんな助けでも大歓迎です。

+0

"didn-t work mean"とは何ですか?コンパイルエラー?ランタイムエラー?正確なエラーメッセージは何ですか? – k3b

+0

申し訳ありませんが、編集しなければなりません。私は変更なしで同じエラーを受けました。 – Zarwalski

+0

あなたのアプリはどのようなタイプの例外を引き起こしますか?あなたのログを投稿してください –

答えて

0

リンクされた質問に記載されているように、TelephonyManagerのコンストラクタは非表示です。これは、電話全体が1つのTelephonyManagerを共有しているからです(一度に1つの電話を使用する複数のアプリがどうして存在するのでしょうか?)。 TelephonyManagerを取得するには、アプリケーションのContextからリクエストする必要があります。

TelephonyManager device = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
+0

ありがとう、私は上記を使用してみましたが、コードは今、電話でそれを実行しようとするとcopiles、それはすぐに私のアプリケーションが停止したと言います。その行のコメントを外すと問題なく動作します。 – Zarwalski

+0

LogCatを確認してください。私の推測では、それはセキュリティの例外です。あなたのアプリは適切にTelephonyManagerへのアクセス権を要求していますか? –

+0

私はマニフェストにREAD_PHONE_STATE権限を追加しました。アンドロイド・ドックが必要としていることですが、telephonymanagerに必要な権限があります。 LogCatについて聞いたことがありません。これは私の携帯電話用にダウンロードする必要があるツールですか? (私は初心者デベロッパーで、これは私がandroid sdkを使って作業している最初のプロジェクトです) – Zarwalski

関連する問題