2

Android Developers http://android-developers.blogspot.pt/2013/10/getting-your-sms-apps-ready-for-kitkat.htmlからの最近の投稿に同意して、私は自分のアプリを新しいAndroidバージョンですが、ユーザーがSMSを処理するデフォルトのアプリケーションとしてアプリを設定できるようにするダイアログを作成するよう提案する部分で問題が発生しました:

Android デベロッパーの投稿

public class ComposeSmsActivity extends Activity {

@Override
protected void onResume() {
    super.onResume();

    final String myPackageName = getPackageName();
    if (!Telephony.Sms.getDefaultSmsPackage(this).equals(myPackageName)) {
        // App is not default.
        // Show the "not currently set as the default SMS app" interface
        View viewGroup = findViewById(R.id.not_default_app);
        viewGroup.setVisibility(View.VISIBLE);

        // Set up a button that allows the user to change the default SMS app
        Button button = (Button) findViewById(R.id.change_default_app);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent =
                        new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
                intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, 
                        myPackageName);
                startActivity(intent);
            }
        });
    } else {
        // App is the default.
        // Hide the "not currently set as the default SMS app" interface
        View viewGroup = findViewById(R.id.not_default_app);
        viewGroup.setVisibility(View.GONE);
    }
}

}

コード自体は非常に簡単ですが、テレフォニーを解決できないと表示されているため、Telephony.Sms.getDefaultSmsPackage にアクセスできず、それを修正するインポートまたは宣言が見つかりません。

誰でも助けてもらえますか?

4

3 に答える 3

2

この変更により、すべての SMS ブロック アプリが機能しなくなります。「Android 4.4 以降では、アプリが SMS_RECEIVED_ACTION ブロードキャストを中止しようとしても無視されるため、関心のあるすべてのアプリがそれを受信する可能性があることに注意してください。」

これを回避する方法があると思いますか?!

たぶん、少なくともルート上で?

于 2013-10-22T21:40:43.610 に答える
2

android.provider.Telephonyまだ存在していません (API 18 - 4.3 の時点)。

このクラスは 4.4 (おそらく API 19) で追加されます。そのブログ投稿では、新しい API がリリースされたときに行う必要がある変更が強調されているため、その時が来ても驚くことはありません。

投稿の最後から:

変更を行うのに役立つように、Android 4.4 で変更をコンパイルしてテストできるようにするために、Android 4.4 に必要な SDK コンポーネントをまもなく提供します。

このクラスを持たない古いバージョンで問題が発生しないように、このコードを API バージョン チェックでラップする必要があることを忘れないでください。

于 2013-10-22T17:11:22.463 に答える
-2

どうやらルートアクセスがあります。最新バージョンの Cerberus アプリは、これを行っていると主張しています。

さて、彼らがどのようにそれを行うかを知っていれば:(

于 2014-01-20T17:30:07.460 に答える