gpt4 book ai didi

android - 窃听电话号码 : I want my App to be in the application chooser

转载 作者:行者123 更新时间:2023-11-29 01:40:23 26 4
gpt4 key购买 nike

这与 Android custom dialler on tapping phone number links 中的问题相同.我按照那里的说明做了所有事情。

我希望在点击电话号码时,我的应用程序出现在应用程序选择器中。

我有

package com.example.editcall;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class OutgoingCallReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.d(OutgoingCallReceiver.class.getSimpleName(), intent.toString() + ", call to: " + phoneNumber);
Toast.makeText(context, "Outgoing call catched: " + phoneNumber, Toast.LENGTH_LONG).show();
}

}

在 AndroidManifest.xml 中:

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

<receiver
android:name=".OutgoingCallReceiver"
android:exported="true" >
<intent-filter android:priority="100" >
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.DIAL" />

<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="tel" />
</intent-filter>
</receiver>

但它不会出现在应用程序选择器中。有什么想法吗?

解决方案:

正如下面提到的@CommonsWare,它需要是一个 Activity 。

另外,android.intent.category.LAUNCHER是不行的,必须是android.intent.category.DEFAULT

而且您可以忘记(为此 :-) android:priorityandroid:exported

所以,这是可行的:

    <activity android:name=".ui.SearchActivity" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.DIAL" />

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="tel" />
</intent-filter>
</activity>

用这个来获取电话号码:

public class SearchActivity extends FragmentActivity {

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

String calledNumber = null;
String inputURI = this.getIntent().getDataString();
if (inputURI != null) {
Uri uri = Uri.parse(Uri.decode(inputURI));
if (uri.getScheme().equals("tel")) {
calledNumber = uri.getSchemeSpecificPart();
}
}
}

最佳答案

你的 <intent-filter>专为 <activity> 设计.将它与 <receiver> 一起使用将不会很幸运。 .此外,选择器仅显示 Activity 。因此,创建一个 <activity> , 并使用你的 <intent-filter>那里(可能减去 priority )。

关于android - 窃听电话号码 : I want my App to be in the application chooser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25013754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com