5

着信に応答する Android アプリを開発しています。ブロードキャスト レシーバーをセットアップし、マニフェスト ファイルにパーミッションとインテント フィルターを設定しましたが、多くの場合は機能します。すべてのアプリを強制終了し、電話を再起動しても、まだ機能します..

ただし、反応しない場合があり、一度反応すると再起動しても反応しません。

私はこれに約1か月苦労しており、バナナを運転しています. 着信があるたびにアプリが応答する必要があります。

すべてのコードを削除して、通話の受信時または終了時にトースト メッセージを表示するだけにしました。アプリがこれ以外に何もしない場合でも、動作は同じです。

これをエミュレーターで再現することはできません。HUAWEI ASCEND Y550をデバイス テストに使用しています。

どんな助けでも大歓迎です、

デビッド

マニフェスト:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.test.app.receivertest" >

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

  <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver android:name=".CallReceiver" android:enabled="true">
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>
  </application>
</manifest>

私の受信機:

public class CallReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    try {
        if (context == null && intent == null)
            return;

        String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

        String action = intent.getAction();
        Toast.makeText(context, action + " " + state, Toast.LENGTH_SHORT).show();
    } catch (Exception ex) {
        try {
            Toast.makeText(context, "Error", Toast.LENGTH_SHORT).show();
        }
        catch (Exception e)
        {
        }
    }
  }
}
4

2 に答える 2

5

私はこれを解決したかもしれないと思います-私はAndroid携帯の開発や使用に不慣れですが...

私のHUAWEI電話では、「保護されたアプリ」の設定にオプションがあります-それらは殺されません。

私は何人かの友人の Android フォンを見てきましたが、同じ設定を見つけることができませんでした。つまり、バッテリーの低下を補う HUAWEI 固有の機能であると言うのは正しいことです。

これが HUAWEI 固有の問題であることを確認できる人はいますか?

デビッド

于 2015-02-08T02:25:34.697 に答える
0

次のように優先度を設定してみてください。

<intent-filter android:priority="1000">
于 2015-02-07T03:45:29.690 に答える