He estado investigando, porque necesito compartir texto a una app creada con app inventor.
No necesito que tenga un botón mi app y que esta pueda compartir, esto ya se como se hace.
Necesito lo contrario (que aparezca por ejemplo mi app en chrome) y al pulsar se me abra la app con lo que se a compartido.
aclaración/ejemplo: estamos en Google Chrome y queremos compartir el enlace desde las opciones. y nos sale: whatsapp, facebook,... pues que aparezca también mi app. y claramente que mi app capture lo que se le envía.
manifest:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="appinventor.ai_quique81.cutout" platformBuildVersionCode="22" platformBuildVersionName="5.1.1-1819727">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application android:debuggable="false" android:icon="@drawable/ya" android:label="cutout" android:name="com.google.appinventor.components.runtime.multidex.MultiDexApplication">
<activity android:configChanges="keyboard|keyboardHidden|orientation" android:name=".Screen1" android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".YourActivity" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
<activity android:configChanges="keyboard|keyboardHidden|orientation" android:name="appinventor.ai_quique81.cutout.Screen2" android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
</application>
</manifest>
Для того, чтобы приложение появилось в списке выборов shared, ты должен использовать intent-filter
.
Какие-то примеры здесь и здесь.
В способ они обобщают, в твоем manifest определи (документацию):
<activity android:name=".YourActivity" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
Внутри intent-filter
у нас есть 3 признака:
action
: В твоем случае SEND
чтобы получать.category
: Важно, что был DEFAULT
data android
: Тип data
который ты получаешь, в этом случае плоский текст. Он мог бы быть image/*
чтобы принимать все виды изображений.У всех приложений Android есть файл Manifest, если ты не делаешь ее вручную, он создается автоматически, я не использовал Апп Инвентор, чтобы создавать apps, но ты можешь тестировать то, что я предлагаю.
Мое предложение:
1. - Разряд Apktool, это - приложение для инженерного дела некрай к файлам apk's. Ты можешь делать это отсюда, остается серия шагов для установки, которые очень простые.
2. - Ты нуждаешься в том, чтобы считать установленным JDK Java, загрузись отсюда.
3. - Нуждаться в том, чтобы считать установленным SDK Android, загружается отсюда
4. - Располагать framework-res.apk, (ты это находишь в/system/framework/framework-res.apk).
5. - Ты располагаешь apk (В этом случае он был бы твоим app appInventor)
Когда ты будешь считать это готовым, найди тебя в folder apk и пишет следующее в консоли для descompilar apk:
apktool d -s nombre_de_tu_app.apk
С этим ты создаешь папку с тем же именем, что и твой app, входишь в папку и ты увидишь каталог, сходный с этим:
--TuApp
---Assets
---Original
---res
---smali
---AndroidManifest.xml
. . .
Тогда, ты открываешь так называемый файл AndroidManifest.xml, у которого будет аспект, сходный с этим:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="appinventor.ai_mletsch80.AppInvActivityStarter">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
. . .
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
.......
</activity>
. . .
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
<action android:name="com.google.android.apps.googlevoice.SMS_RECEIVED" android:permission="com.google.android.apps.googlevoice.permission.RECEIVE_SMS"/>
</intent-filter>
</receiver>
</application>
</manifest>
Там ты размещаешь линии кода, которые представляют тебя в другом ответе:
<activity android:name=".YourActivity" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
Сделав твои изменения только договорись о том, чтобы вновь составить твой app, со следующим:
apktool b nombre_de_tu_app
Замечание:
nombre_de_tu_app - имя твоего app, ты не должен размещать расширение apk или тебя пометит ошибка.
РЕДАКТИРОВАНИЕ
В конце концов твой файл Manifest должен оставаться нечто похожее (Добавляя линии под твоей активностью launcher):
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- Aquí por debajo de MAIN y LAUNCHER ya agregas las líneas -->
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
<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="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
Это было бы совсем, если ты хочешь изучить и узнать больше на descompilación и перекомпиляции apks ты можешь посещать этот сайт (на английском) и будьте другим (на испанском языке)