Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 直接共享目标未显示在共享选择器中_Java_Android - Fatal编程技术网

Java 直接共享目标未显示在共享选择器中

Java 直接共享目标未显示在共享选择器中,java,android,Java,Android,我正在考虑创建一个tasker插件,允许用户在android 6.0上定制他们的直接共享目标。我已经按照文档中的说明启动并运行了所有内容,但它们没有显示出来。非常感谢您的帮助 下面是manifest.xml: <activity android:name=".receiver.ShareReceiver" android:label="Test" android:icon="@drawable/ic_action_labels"> &

我正在考虑创建一个tasker插件,允许用户在android 6.0上定制他们的直接共享目标。我已经按照文档中的说明启动并运行了所有内容,但它们没有显示出来。非常感谢您的帮助

下面是manifest.xml:

<activity android:name=".receiver.ShareReceiver"
        android:label="Test"
        android:icon="@drawable/ic_action_labels">

        <intent-filter android:label="Test" android:icon="@drawable/ic_action_labels">
            <action android:name="android.intent.action.SEND"/>
            <data android:mimeType="text/plain"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>

        <meta-data
            android:name="android.service.chooser.chooser_target_service"
            android:value=".ui.DirectShareService" />

    </activity>

    <activity android:name=".ui.ActivityIconSelector"
        android:label="Icon Selector">

    </activity>

以下是DirectShareService:

public class DirectShareService extends ChooserTargetService {

    public SharedPreferences directShare;
    public List<ChooserTarget> items;
    public int numberOfItems;
    public String title;
    public String iconText;

    @Override
    public List<ChooserTarget> onGetChooserTargets(ComponentName targetActivityName, IntentFilter matchedFilter) {
        Intent intent = new Intent(this, MainActivity.class);
        return getItems(targetActivityName, intent);
    }

    public List<ChooserTarget> getItems(ComponentName targetActivityName, Intent intent) {
        directShare = getSharedPreferences("Direct Share", 0);
        numberOfItems = getRightAmount(directShare.getInt("Items", 0));
        items = new ArrayList<>();
        for (int i = 1; i <= numberOfItems; i++) {
            switch (i) {
                case 1:
                    title = directShare.getString("OneTitle", "Not Set");
                    iconText = directShare.getString("OneIcon", "Not Set");
                    items.add(getTarget(title, iconText, "", i, targetActivityName, intent));
                    break;
                case 2:
                    title = directShare.getString("TwoTitle", "Not Set");
                    iconText = directShare.getString("TwoIcon", "Not Set");
                    items.add(getTarget(title, iconText, "", i, targetActivityName, intent));
                    break;
                case 3:
                    title = directShare.getString("ThreeTitle", "Not Set");
                    iconText = directShare.getString("ThreeIcon", "Not Set");
                    items.add(getTarget(title, iconText, "", i, targetActivityName, intent));
                    break;
                case 4:
                    title = directShare.getString("FourTitle", "Not Set");
                    iconText = directShare.getString("FourIcon", "Not Set");
                    items.add(getTarget(title, iconText, "", i, targetActivityName, intent));
                    break;
            }
        }
        return items;
    }

public ChooserTarget getTarget(String title, String icon, String command, int num, ComponentName targetActivityName, Intent intent) {
        if (icon.equals("Not Set")) {
            return new ChooserTarget(title, Icon.createWithResource(this, R.drawable.ic_action_labels), num, targetActivityName, intent.getExtras());
        } else
            return new ChooserTarget(title, Icon.createWithContentUri(icon), num, targetActivityName, intent.getExtras());
    }
公共类DirectShareService扩展了ChooserTargetService{
公众股参考直接股;
公共清单项目;
公共物品;
公共字符串标题;
公共字符串iconText;
@凌驾
OnGetBooserTargets的公共列表(组件名称targetActivityName,IntentFilter matchedFilter){
意向意向=新意向(此,MainActivity.class);
返回getItems(targetActivityName、intent);
}
公共列表getItems(组件名称targetActivityName,意图){
directShare=GetSharedReferences(“直接共享”,0);
numberOfItems=getRightAmount(directShare.getInt(“Items”,0));
items=newarraylist();

对于(int i=1;i,您应该使用此构造函数提醒:

public ChooserTarget(CharSequence title, Icon icon, float score,
        ComponentName componentName, @Nullable Bundle intentExtras);
-分数:此目标的排名分数介于0.0f和1.0f之间,包括0.0f和1.0f

在构造函数中,将检查分数:

if (score > 1.f || score < 0.f) {
        throw new IllegalArgumentException("Score " + score + " out of range; "
                + "must be between 0.0f and 1.0f");
    }
if(分数>1.f | |分数<0.f){
抛出新的IllegalArgumentException(“分数”+分数+”超出范围
+“必须介于0.0f和1.0f之间”);
}

所以请不要在你的代码中用“i”值来填分数!

android.service.chooser.chooser\u target\u service
元素是什么?还有,你是如何测试这个的?@Commonware我只是暂时把主要活动放在这里,同时测试它是否有效(更新了帖子以显示它)。我通过进入google+并分享帖子来测试这一点。“我只是暂时将主要活动放在原处,同时测试它是否有效”-AFAIK,
ChooserTargetService
仅用于
ACTION\u SEND
,可能
ACTION\u SEND\u MULTIPLE
。这是“主要活动”实现其中的一个?@commonware不是,但我只是将其更改为让ACTION_SEND,它们仍然没有出现。我还用getTarget方法更新了帖子,需要注意的是,创建目标时需要一堆额外的东西,这与我在文档中看到的不同“我只是把它改成让ACTION_发送,但他们仍然没有出现“--您是否更改了测试方法,以执行一些可能导致此活动出现在选择器中的操作?请暂时忘记
ChooserTargetService
。只需将此活动显示在选择器中即可。然后,将
添加回.FWIW,这是我上次尝试它时使用的,几个月前6.0发布时。