2017-02-13 15 views
0

Я работаю над приложением (просто небольшой проект для себя, я не помещаю его в Play Store), который отправит тост. Моя конечная цель - иметь команду оболочки для отправки тоста. Мне все равно, как я получаю эти результаты, я просто хочу, чтобы он работал.Пользовательское намерение сбой моего приложения

Я думаю, что у меня будет команда оболочки, отправляющая намерение в мое приложение. Я использую пользовательское намерение:

<intent-filter> 
    <action android:name="com.tylerr147.toast" /> 
<category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="text/plain" /> 
</intent-filter> 

Когда я использую adb shell am start -a "com.tylerr147.toast" --es "android.intent.extra.TEXT" "toasty" -t "text/plain", чтобы запустить его, мое приложение падает.

Вот мой AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tylerr147.intenttoast" > 
<application android:allowBackup="true" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 
    <activity android:name=".handler" > 
     <intent-filter> 
     <action android:name="android.intent.action.SEND" /> 
<category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="text/plain" /> 
</intent-filter> 
<intent-filter> 
<action android:name="com.tylerr147.toast" /> 
    <category android:name="android.intent.category.DEFAULT"/> 
    <data android:mimeType="text/plain" /> 
</intent-filter> 
</activity> 
</application> 
</manifest> 

И мой handler.java

package com.tylerr147.intenttoast; 
import android.app.*; 
import android.content.*; 
import android.net.*; 
import android.os.*; 
import android.widget.*; 
import java.util.*; 
import android.util.*; 

public class handler extends Activity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     Intent intent = getIntent(); 
     String action = intent.getAction(); 
     String type = intent.getType(); 
     handleSendText(intent); 
    } 
    public void handleSendText(Intent intent) 
    { 
     try{ String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); 
     if (sharedText != null) { 
      // Update UI to reflect text being shared 
      Toast.makeText(getApplicationContext(), sharedText, Toast.LENGTH_LONG).show(); 
     } 
     } catch(Exception e) { 
    Log.e("Boked", e.toString()); 
     } 
    } 
} 

Спасибо за любую помощь!

ответ

0

Попробуйте

adb shell am broadcast -a "com.tylerr147.toast" --es "android.intent.extra.TEXT" "toasty" -t "text/plain" 

вместо

adb shell am start -a "com.tylerr147.toast" --es "android.intent.extra.TEXT" "toasty" -t "text/plain" 

заменить начать с эфира.

надеюсь, что это сработает.

+0

Хотя на этот раз он не потерпел крушение, он также не сделал тост. –

 Смежные вопросы

  • Нет связанных вопросов^_^